我产生了一个子进程,然后用管道连接到它。
我将管道配置为将SIGPOLL发送给fcntl I_SETSIG可用的数据。
子程序通过管道发送一些数据,然后终止。
我能确定SIGPOLL会在SIGCHLD之前收到吗?(或者在这种情况下,我可能只收到没有SIGCHLD的SIGPOLL?如果我同时收到这两个信号,我能确定他们的订单吗?)
我在FreeBSD上使用Perl,但是这个问题扩展到了所有Unix平台。
发布于 2016-07-16 15:52:18
这个设计上写满了竞赛条件。你不能确定信号是否会按顺序传递,甚至根本不确定。如果您使用的是Perl,这会使它变得更加不确定。
重新设计,以便有一些来自父母和孩子的确认,数据已经收到。信号发送订单和号码是不可靠的,要求便携式解决方案更是无望。
https://unix.stackexchange.com/questions/296308
复制相似问题