diff options
Diffstat (limited to 'src/lib9/fork.c')
-rw-r--r-- | src/lib9/fork.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib9/fork.c b/src/lib9/fork.c index 4dbff87b..841d2c2d 100644 --- a/src/lib9/fork.c +++ b/src/lib9/fork.c @@ -1,4 +1,5 @@ #include <u.h> +#include <signal.h> #include <libc.h> #include "9proc.h" #undef fork @@ -7,9 +8,15 @@ int p9fork(void) { int pid; + sigset_t all, old; + sigfillset(&all); + sigprocmask(SIG_SETMASK, &all, &old); pid = fork(); - _clearuproc(); - _p9uproc(0); + if(pid == 0){ + _clearuproc(); + _p9uproc(0); + } + sigprocmask(SIG_SETMASK, &old, nil); return pid; } |