为什么Go中的os.StartProcess将子进程组id设置为等于子pid

时间:2014-10-14 05:20:24

标签: go exec fork pid process-group

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

它在" linux"和" bsd"配置,来源: http://golang.org/src/pkg/syscall/exec_bsd.go?h=SYS_SETPGID#L105 http://golang.org/src/pkg/syscall/exec_linux.go?h=SYS_SETPGID#L117

我在过去注意到OSX Foundation库NSTask - (void)launch方法执行相同的操作(未记录)。当时看起来像是一种烦恼,因为它更难以管理流程树。

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

1 个答案:

答案 0 :(得分:1)

简短的回答是它没有。如果attr.Sys.Setpgid为true,它只会更改组。这是与系统的API具有功能奇偶校验。它甚至不是所有操作系统的选项