diff options
Diffstat (limited to 'src/lib9/rfork.c')
| -rw-r--r-- | src/lib9/rfork.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lib9/rfork.c b/src/lib9/rfork.c index 41d3f9d6..270c3cdd 100644 --- a/src/lib9/rfork.c +++ b/src/lib9/rfork.c @@ -4,6 +4,20 @@ int p9rfork(int flags) { + int pid; + + if((flags&(RFPROC|RFFDG|RFMEM)) == (RFPROC|RFFDG)){ + /* check other flags before we commit */ + flags &= ~(RFPROC|RFFDG); + if(flags & ~(RFNOTEG)){ + werrstr("unknown flags %08ux in rfork", flags); + return -1; + } + pid = fork(); + if(pid != 0) + return pid; + } + if(flags&RFPROC){ werrstr("cannot use rfork to fork -- use ffork"); return -1; |
