diff options
| -rw-r--r-- | include/spawn.h | 1 | ||||
| -rw-r--r-- | src/process/posix_spawn.c | 4 | 
2 files changed, 5 insertions, 0 deletions
| diff --git a/include/spawn.h b/include/spawn.h index 29c799ee..f3e9e23c 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -21,6 +21,7 @@ struct sched_param;  #define POSIX_SPAWN_SETSIGMASK 8  #define POSIX_SPAWN_SETSCHEDPARAM 16  #define POSIX_SPAWN_SETSCHEDULER 32 +#define POSIX_SPAWN_SETSID 128  typedef struct {  	int __flags; diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c index 0bdf71cd..ea5d2998 100644 --- a/src/process/posix_spawn.c +++ b/src/process/posix_spawn.c @@ -73,6 +73,10 @@ static int child(void *args_vp)  		__libc_sigaction(i, &sa, 0);  	} +	if (attr->__flags & POSIX_SPAWN_SETSID) +		if ((ret=__syscall(SYS_setsid)) < 0) +			goto fail; +  	if (attr->__flags & POSIX_SPAWN_SETPGROUP)  		if ((ret=__syscall(SYS_setpgid, 0, attr->__pgrp)))  			goto fail; | 
