Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有pthreads/sempahores、信号的Unix进程同步?_Unix_Synchronization_Signals - Fatal编程技术网

没有pthreads/sempahores、信号的Unix进程同步?

没有pthreads/sempahores、信号的Unix进程同步?,unix,synchronization,signals,Unix,Synchronization,Signals,我正在尝试编写一个不使用pthreads或信号量库的程序。我想用信号做一些同步。我在一些Unix书籍中读到过关于它们的内容,但我还是不太明白。我写了一些模拟程序设计/代码,这不是我的程序,但它给出了我如何组织进程/信号的想法。这似乎是一个合理的解决方案吗 程序流程: 主分叉随机次数,并在每个子级中执行“程序”。程序为子对象分配一个值,1或2(如输入或输出等) 我想要一种同步这些孩子的方法。我认为使用信号是可能的,根据我所读到的,我想做一些类似的事情: 如果子项==1,则发送父项(主)SIGUSR

我正在尝试编写一个不使用pthreads或信号量库的程序。我想用信号做一些同步。我在一些Unix书籍中读到过关于它们的内容,但我还是不太明白。我写了一些模拟程序设计/代码,这不是我的程序,但它给出了我如何组织进程/信号的想法。这似乎是一个合理的解决方案吗

程序流程:

主分叉随机次数,并在每个子级中执行“程序”。程序为子对象分配一个值,1或2(如输入或输出等)

我想要一种同步这些孩子的方法。我认为使用信号是可能的,根据我所读到的,我想做一些类似的事情:

如果子项==1,则发送父项(主)SIGUSR1;如果子项==2,则发送父项(主)SIGUSR2。当父级服务于该信号时,则结束

现在回到主界面,我想组织这些输入信号。我一次只接受一种类型,因此如果一个孩子向我发送SIGUSR1,我将阻止所有SIGUSR2,或者如果一个孩子先向我发送SIGUSR2,我将阻止所有SIGUSR1。Main将接收信号并为该类型的所有信号提供服务,直到不再存在该类型的信号,然后它将检查/取消阻止其他类型的信号,并为该类型的任何信号提供服务(如果存在),否则Main将等待更多信号

这看起来像是对信号的正确使用吗?这在信号中可能吗

谢谢

你不会说为什么要使用信号。你只是想弄清楚信号是怎么工作的吗

这看起来像是对信号的正确使用吗?这在信号中可能吗

我不会去接近你提出的那种带有信号的设计。你不会说孩子们在做什么,但我可能会使用管道、套接字,或者消息队列


如果您可以添加一些关于您的高级目标的信息,我可能可以为您提供一些更好的指导。

如果您想要排队信号,请务必使用
sigqueue(2)
谢谢,我将阅读更多信息!我希望了解信号是如何工作的。通过处理一些典型的死锁问题,我了解了信号量/pthread如何进行同步。我正计划用信号解决一些死锁问题。我想到的问题是单线桥的问题。在这种情况下,我会尝试使用一个信号作为北车,一个信号作为南车。我一次只能为一个方向解锁桥梁(主干道),并在服务另一端之前处理交通(请求)。我不确定这在信号方面是否可行,但从我对信号的阅读来看,这似乎是可行的,也许——作为一个学术练习。但信号并不是我解决这个问题的第一选择。信号可能是我解决这个问题的最后选择。但除了最基本的IPC之外,我对任何信号都有偏见,可能是因为我不得不修复严重依赖信号使用的可怕设计,而其他东西本来更合适。谢谢,我想我会给它一个学术练习的机会。如果你有什么想法可以帮助我,请让我知道,再次感谢!