2

我对unix编程很陌生,所以请多多包涵。:)

我想在两个进程之间传递数据。我打算使用命名管道,但阅读了这些“半双工”管道,这很有趣,所以我想我会先尝试一下。

到目前为止,我对这些管道有两个问题:

  1. 我还没有弄清楚如何让 execlp 从我的子进程运行另一个应用程序
  2. 即使可以,调试也很困难,因为我只能在父进程中设置断点

我确信这些问题是有原因的。我开始怀疑忘记它们并使用命名管道是否有意义,这样我就可以在单独的 Eclipse 实例中调试每个应用程序。

如果有任何相关信息,请告诉我。我使用的代码本质上是它在tldp.org上找到的。

编辑——我将我的问题重命名为关于一般的unix管道。我曾假设对于命名管道,我不必使用 fork(),但到目前为止我看到的所有示例都需要它。因此,无论是半双工还是命名管道,我都需要能够以某种方式调试子进程!

编辑#2——这个例子清楚地表明,我之前(在 IBM 链接上)看到的关于命名管道的内容不一定是真的。

4

1 回答 1

1

我推荐两个工具:

  • strace -ff应该为您提供所有重大事件的跟踪,让您详细检查正在发生的事情,即所有读取和写入;

  • lsof允许您转储所涉及进程的文件描述符,清楚地显示与其他内容相关的内容,特别是如果您忘记了close()某些描述符并且整个事情死锁。

于 2013-05-31T09:47:28.943 回答