我正在用C编写一个shell。我正在尝试为每个作业设置一个新的进程组。每个管道的第一个流程成为工作流程组的领导者,其他流程加入领导者的流程组。
因此,在这种情况下,cat somefile | wc
,cat
流程将成为流程负责人。
如何使用setpgid
实现此行为?如果我循环遍历每个进程,是否需要存储第一个fork的pid
的值,并将其用作后续迭代循环的组ID,以在子类中设置相应的进程组ID ?
答案 0 :(得分:0)
如果我是你,我会接受父母收到的fork()pid并执行setpgid(child_pid,your_gid);. getpgid(0)可用于返回您的组ID。使用这两条信息来做setpgid()。