From f4159eff9253bb701bacfa14e37bdb80e8dff7da Mon Sep 17 00:00:00 2001 From: Giuseppe Cesarano Date: Fri, 7 Nov 2025 08:53:43 +0100 Subject: [PATCH] std.Child: start_suspended ported to posix --- lib/std/process/Child.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/std/process/Child.zig b/lib/std/process/Child.zig index c84c878972..65b49707e4 100644 --- a/lib/std/process/Child.zig +++ b/lib/std/process/Child.zig @@ -85,8 +85,8 @@ expand_arg0: Arg0Expand, /// Darwin-only. Disable ASLR for the child process. disable_aslr: bool = false, -/// Darwin and Windows only. Start child process in suspended state. For Darwin it's started -/// as if SIGSTOP was sent. +/// Start child process in suspended state. +/// For Posix systems it's started as if SIGSTOP was sent. start_suspended: bool = false, /// Windows-only. Sets the CREATE_NO_WINDOW flag in CreateProcess. @@ -669,6 +669,10 @@ fn spawnPosix(self: *ChildProcess) SpawnError!void { posix.setpgid(0, pid) catch |err| forkChildErrReport(err_pipe[1], err); } + if (self.start_suspended) { + posix.kill(posix.getpid(), .STOP) catch |err| forkChildErrReport(err_pipe[1], err); + } + const err = switch (self.expand_arg0) { .expand => posix.execvpeZ_expandArg0(.expand, argv_buf.ptr[0].?, argv_buf.ptr, envp), .no_expand => posix.execvpeZ_expandArg0(.no_expand, argv_buf.ptr[0].?, argv_buf.ptr, envp),