unix管道的有效调试技术?

时间:2013-05-31 06:01:51

标签: unix pipe named-pipes

我是unix编程的新手,所以请耐心等待。 :)

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

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

  1. 我还没弄明白如何让execlp从我的子进程中运行另一个应用程序
  2. 即使我可以,调试很难,因为我只能在父进程中设置断点
  3. 我确信这些问题有原因。我开始怀疑忘记它们是否有意义,只使用命名管道,以便我可以在一个单独的eclipse实例中调试每个应用程序。

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

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

    编辑#2 - this example清楚地表明我之前(在IBM链接上)看到的有关命名管道的信息并不一定正确。

1 个答案:

答案 0 :(得分:1)

我推荐两种工具:

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

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