summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/spawn.h1
-rw-r--r--src/process/posix_spawn.c4
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;