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