aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/fork.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/fork.c')
-rw-r--r--src/lib9/fork.c11
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;
}