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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/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
unix管道的有效调试技术?_Unix_Pipe_Named Pipes - Fatal编程技术网

unix管道的有效调试技术?

unix管道的有效调试技术?,unix,pipe,named-pipes,Unix,Pipe,Named Pipes,我对unix编程非常陌生,请耐心听我说。:) 我想在两个进程之间传递数据。我打算使用命名管道,但是读到了这些“半双工”管道,它非常有趣,所以我想我会先试试 到目前为止,我对这些管道有两个问题: 我还没有弄明白如何让execlp从我的子进程运行另一个应用程序 即使可以,调试也很困难,因为我只能在父进程中设置断点 我相信这些问题是有原因的。我开始怀疑,忘记它们,只使用命名管道,这样我就可以在单独的eclipse实例中调试每个应用程序,这是否有意义 如果有任何相关信息,请告诉我。我使用的代码基本上就是

我对unix编程非常陌生,请耐心听我说。:)

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

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

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

    如果有任何相关信息,请告诉我。我使用的代码基本上就是它在上面找到的

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

    编辑#2——清楚地表明我以前(在IBM链接上)看到的关于命名管道的内容不一定是正确的。

    我推荐两种工具:

    • strace-ff
      应该能够跟踪所有重要事件,让您能够详细检查正在发生的事情,即所有读写操作

    • lsof
      允许您转储所涉及进程的文件描述符,清楚地显示与其他进程相关的内容,特别是当您忘记关闭某些描述符以及整个进程死锁时


    谢谢,我将在运行代码后研究这些工具!