为什么操作系统。Go 中的启动进程将子进程组 ID 设置为等于子进程组 pid



golang库函数os.StartProcess()在分叉后调用子进程中的setpgid(0,0)

它在"linux"one_answers"bsd"配置上执行此操作,来源如下:http://golang.org/src/pkg/syscall/exec_bsd.go?h=SYS_SETPGID#L105http://golang.org/src/pkg/syscall/exec_linux.go?h=SYS_SETPGID#L117

我在过去注意到OSX基础库NSTask - (void)launch方法也做同样的事情(未记录)。当时,这似乎是一种烦恼,因为它使管理流程树变得更加困难。

这些库自动执行此操作的好处是什么?

简单的答案是它没有。仅当attr。Sys.Setpgid为true。这是为了具有与系统的API相同的功能。它甚至不是所有操作系统上的选项

最新更新