X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fprocess.c;h=3f66ddd91525431558a76adc3fe4743c0b79d520;hb=c7f7adb70cb34bb568f9b6327d6adb945326e029;hp=1fe3c123506ccbcbec0bacbd15f550b02d67f59d;hpb=3b01baa3970139c3a195017ab1ea3e42761e3db2;p=openvswitch diff --git a/lib/process.c b/lib/process.c index 1fe3c123..3f66ddd9 100644 --- a/lib/process.c +++ b/lib/process.c @@ -161,7 +161,7 @@ process_register(const char *name, pid_t pid) assert(sigchld_is_blocked()); - p = xcalloc(1, sizeof *p); + p = xzalloc(sizeof *p); p->pid = pid; slash = strrchr(name, '/'); p->name = xstrdup(slash ? slash + 1 : name); @@ -201,17 +201,14 @@ process_start(char **argv, } block_sigchld(&oldsigs); - fatal_signal_block(); pid = fork(); if (pid < 0) { - fatal_signal_unblock(); unblock_sigchld(&oldsigs); VLOG_WARN("fork failed: %s", strerror(errno)); return errno; } else if (pid) { /* Running in parent process. */ *pp = process_register(argv[0], pid); - fatal_signal_unblock(); unblock_sigchld(&oldsigs); return 0; } else { @@ -220,7 +217,6 @@ process_start(char **argv, int fd; fatal_signal_fork(); - fatal_signal_unblock(); unblock_sigchld(&oldsigs); for (fd = 0; fd < fd_max; fd++) { if (is_member(fd, null_fds, n_null_fds)) { @@ -289,7 +285,7 @@ process_exited(struct process *p) return true; } else { char buf[_POSIX_PIPE_BUF]; - read(fds[0], buf, sizeof buf); + ignore(read(fds[0], buf, sizeof buf)); return false; } } @@ -521,12 +517,10 @@ process_run_capture(char **argv, char **stdout_log, char **stderr_log, } block_sigchld(&oldsigs); - fatal_signal_block(); pid = fork(); if (pid < 0) { int error = errno; - fatal_signal_unblock(); unblock_sigchld(&oldsigs); VLOG_WARN("fork failed: %s", strerror(error)); @@ -539,7 +533,6 @@ process_run_capture(char **argv, char **stdout_log, char **stderr_log, struct process *p; p = process_register(argv[0], pid); - fatal_signal_unblock(); unblock_sigchld(&oldsigs); close(s_stdout.fds[1]); @@ -575,7 +568,6 @@ process_run_capture(char **argv, char **stdout_log, char **stderr_log, int i; fatal_signal_fork(); - fatal_signal_unblock(); unblock_sigchld(&oldsigs); dup2(get_null_fd(), 0); @@ -617,7 +609,7 @@ sigchld_handler(int signr UNUSED) } } } - write(fds[1], "", 1); + ignore(write(fds[1], "", 1)); } static bool