使用c,linux中的信号进行进程间同步

流程A叉子说4个子流程. exec()用于替换子代码.孩子初始化并且必须等待父母创建他们中的所有4个.

然后父进程向每个子进程发送一个sigusr1,以便它们开始处理.父母等待所有孩子完成处理.当孩子完成工作时,它会向父母发送一个sigusr2.当父接收到所有sigusr2信号时,它继续执行,合并子进程的计算.

这是一项大学练习,课堂上说过程A(父母)会丢失一些信号,所以我们被告知只需要一定比例的儿童信号成功接收.

我想达到100%.在另一种情况下是暂停()和循环工作?

解决方法:

如果使用标准signal()方法,如果许多孩子在很短的时间内向他发送相同的信号,过程A就会丢失一些信号.如果您正在处理信号并在此期间接收相同的信号,您将丢失第二个信号(更确切地说,它将被默认信号处理程序捕获).

如果您决定使用sigaction(),您将能够捕获发送到您的流程的所有信号.

上一篇:具有多个对象/锁的Java同步


下一篇:从Linux同步到AWS S3 Bucket时保留所有者和文件权限信息