nsjail: clearer new_proc/reap_proc loop
This commit is contained in:
parent
d355e1dc08
commit
bfd7f1ec78
45
nsjail.cc
45
nsjail.cc
@ -141,35 +141,30 @@ static int listenMode(nsjconf_t* nsjconf) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int standaloneMode(nsjconf_t* nsjconf) {
|
static int standaloneMode(nsjconf_t* nsjconf) {
|
||||||
if (!subproc::runChild(nsjconf, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO)) {
|
|
||||||
LOG_E("Couldn't launch the child process");
|
|
||||||
return 0xff;
|
|
||||||
}
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int child_status = subproc::reapProc(nsjconf);
|
if (!subproc::runChild(nsjconf, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO)) {
|
||||||
|
LOG_E("Couldn't launch the child process");
|
||||||
if (subproc::countProc(nsjconf) == 0) {
|
return 0xff;
|
||||||
if (nsjconf->mode == MODE_STANDALONE_ONCE) {
|
}
|
||||||
return child_status;
|
for (;;) {
|
||||||
|
int child_status = subproc::reapProc(nsjconf);
|
||||||
|
if (subproc::countProc(nsjconf) == 0) {
|
||||||
|
if (nsjconf->mode == MODE_STANDALONE_ONCE) {
|
||||||
|
return child_status;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!subproc::runChild(
|
if (showProc) {
|
||||||
nsjconf, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO)) {
|
showProc = false;
|
||||||
LOG_E("Couldn't launch the child process");
|
subproc::displayProc(nsjconf);
|
||||||
return 0xff;
|
|
||||||
}
|
}
|
||||||
continue;
|
if (sigFatal > 0) {
|
||||||
|
subproc::killAll(nsjconf);
|
||||||
|
logs::logStop(sigFatal);
|
||||||
|
return (128 + sigFatal);
|
||||||
|
}
|
||||||
|
pause();
|
||||||
}
|
}
|
||||||
if (showProc) {
|
|
||||||
showProc = false;
|
|
||||||
subproc::displayProc(nsjconf);
|
|
||||||
}
|
|
||||||
if (sigFatal > 0) {
|
|
||||||
subproc::killAll(nsjconf);
|
|
||||||
logs::logStop(sigFatal);
|
|
||||||
return (128 + sigFatal);
|
|
||||||
}
|
|
||||||
|
|
||||||
pause();
|
|
||||||
}
|
}
|
||||||
// not reached
|
// not reached
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user