Use switch with fork()
Allows dropping a local variable if the explicit PID is not needed and it makes it clearer what happens. Also, one should always strive for consistency for cases like these.
This commit is contained in:
parent
6f207dac5f
commit
a8bd21c0ab
10
cron.c
10
cron.c
|
@ -102,20 +102,20 @@ runjob(char *cmd)
|
|||
}
|
||||
}
|
||||
|
||||
pid = fork();
|
||||
if (pid < 0) {
|
||||
switch ((pid = fork())) {
|
||||
case -1:
|
||||
logerr("error: failed to fork job: %s time: %s",
|
||||
cmd, ctime(&t));
|
||||
return;
|
||||
} else if (pid == 0) {
|
||||
case 0:
|
||||
setsid();
|
||||
loginfo("run: %s pid: %d at %s",
|
||||
cmd, getpid(), ctime(&t));
|
||||
execl("/bin/sh", "/bin/sh", "-c", cmd, (char *)NULL);
|
||||
logerr("error: failed to execute job: %s time: %s",
|
||||
logwarn("error: failed to execute job: %s time: %s",
|
||||
cmd, ctime(&t));
|
||||
_exit(1);
|
||||
} else {
|
||||
default:
|
||||
je = emalloc(sizeof(*je));
|
||||
je->cmd = estrdup(cmd);
|
||||
je->pid = pid;
|
||||
|
|
7
tar.c
7
tar.c
|
@ -47,17 +47,16 @@ static char filtermode;
|
|||
static FILE *
|
||||
decomp(FILE *fp)
|
||||
{
|
||||
pid_t pid;
|
||||
int fds[2];
|
||||
|
||||
if (pipe(fds) < 0)
|
||||
eprintf("pipe:");
|
||||
|
||||
pid = fork();
|
||||
if (pid < 0) {
|
||||
switch (fork()) {
|
||||
case -1:
|
||||
weprintf("fork:");
|
||||
_exit(1);
|
||||
} else if (!pid) {
|
||||
case 0:
|
||||
dup2(fileno(fp), 0);
|
||||
dup2(fds[1], 1);
|
||||
close(fds[0]);
|
||||
|
|
Loading…
Reference in New Issue
Block a user