about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/process/posix_spawn.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c
index 1120be08..604756e9 100644
--- a/src/process/posix_spawn.c
+++ b/src/process/posix_spawn.c
@@ -8,6 +8,8 @@
 
 extern char **environ;
 
+pid_t __vfork(void);
+
 int __posix_spawnx(pid_t *restrict res, const char *restrict path,
 	int (*exec)(const char *, char *const *),
 	const posix_spawn_file_actions_t *fa,
@@ -22,7 +24,7 @@ int __posix_spawnx(pid_t *restrict res, const char *restrict path,
 	if (!attr) attr = &dummy_attr;
 
 	sigprocmask(SIG_BLOCK, (void *)(uint64_t []){-1}, &oldmask);
-	pid = __syscall(SYS_fork);
+	pid = __vfork();
 
 	if (pid) {
 		sigprocmask(SIG_SETMASK, &oldmask, 0);