我是unix编程的新手,所以请耐心等待。 :)
我想在两个进程之间传递数据。我打算使用命名管道,但是阅读这些“半双工”管道,这非常有趣,所以我想我会先尝试一下。
到目前为止,我对这些管道存在两个问题:
我确信这些问题有原因。我开始怀疑忘记它们是否有意义,只使用命名管道,以便我可以在一个单独的eclipse实例中调试每个应用程序。
如果有任何相关信息,请告诉我。我使用的代码基本上是tldp.org上的代码。
编辑 - 我将我的问题重命名为关于unix管道。我假设对于命名管道,我不必使用fork(),但到目前为止我看到的所有示例都需要它。因此无论半双工还是命名管道,我都需要能够以某种方式调试子进程!
编辑#2 - this example清楚地表明我之前(在IBM链接上)看到的有关命名管道的信息并不一定正确。答案 0 :(得分:1)
我推荐两种工具:
strace -ff
应该为您提供所有重要事件的跟踪,让您详细检查发生了什么,即所有读取和写入;
lsof
允许您转储所涉及进程的文件描述符,清楚地显示与其他内容相关的内容,特别是,如果您忘记close()
某些描述符和整个事件死锁