我想安装一个信号处理程序来传播SIGHUP到另一个进程组中的子进程,但似乎在 POSIX 中我只能从fork().
fork()那么,有没有一种方法可以避免当您在父级中返回之前收到 SIGHUP但setpgid()子级中已执行之后发生的竞争条件?
看来在 POSIX 中我只能从 的返回中获取子进程的 PID
fork()。
当然,您无法在返回之前 fork()获取子进程 PID ,因为直到那时子进程才存在于父进程的时间轴中。的返回值fork()确实是父级获取 PID 的 POSIX 祝福方式,是的。
fork()那么,有没有一种方法可以避免当您在父级中返回之前收到 SIGHUP但setpgid()子级中已执行之后发生的竞争条件?
是的。在分叉之前拥有父块SIGHUP(请参阅sigprocmask())。父级和/或子级(继承父级的信号配置)应在SIGHUP准备就绪时解除阻塞。