壳管道工作控制

时间:2012-10-07 01:21:32

标签: c shell process jobs

我正在用C编写一个shell。我正在尝试为每个作业设置一个新的进程组。每个管道的第一个流程成为工作流程组的领导者,其他流程加入领导者的流程组。

因此,在这种情况下,cat somefile | wccat流程将成为流程负责人。

如何使用setpgid实现此行为?如果我循环遍历每个进程,是否需要存储第一个fork的pid的值,并将其用作后续迭代循环的组ID,以在子类中设置相应的进程组ID ?

1 个答案:

答案 0 :(得分:0)

如果我是你,我会接受父母收到的fork()pid并执行setpgid(child_pid,your_gid);. getpgid(0)可用于返回您的组ID。使用这两条信息来做setpgid()。