2013-05-31 70 views
2

我對unix編程很陌生,所以請耐心等待。 :)unix管道有效的調試技術?

我想在兩個進程之間傳遞數據。我打算使用命名管道,但是閱讀了這些「半雙工」管道,這非常有趣,所以我想我會先給他們一個嘗試。

我有兩個問題,這些管道迄今:

  1. 我還沒有想出如何讓execlp從我的子進程
  2. 即使我可以運行其他應用程序,調試是艱難的,因爲我只能在父進程中設置斷點

我確信這些問題有其原因。我開始懷疑忘記它們是否合理,只使用命名管道,這樣我就可以在單獨的eclipse實例中調試每個應用程序。

如果有任何相關的信息,請讓我知道。我使用的代碼基本上是在tldp.org上找到的代碼。

編輯 - 我將我的問題重新命名爲unix管道。我假定對於命名管道,我不必使用fork(),但到目前爲止我看到的所有示例都需要它。所以不管是半雙工還是命名管道,我都需要能夠以某種方式調試子進程!

EDIT#2 - this example清楚地表明,我之前在IBM鏈接上看到的關於命名管道的內容並不一定是真的。

回答

1

我推薦兩個工具:

  • strace -ff應該給你所有顯著事件的跟蹤,讓您在詳細研究發生了什麼事情,即所有讀取和寫入;

  • lsof允許您轉儲相關進程的文件描述符,清楚地顯示連接到其他什麼,特別是如果您忘記了某些描述符和整個事件死鎖。

+0

謝謝,我會在我的代碼運行後看看這些工具! – Dave