2

私はUNIXプログラミングに非常に慣れていないので、ご容赦ください。:)

2 つのプロセス間でデータを渡したいと思います。名前付きパイプを使用するつもりでしたが、これらの「半二重」パイプについて読み、非常に興味をそそられたので、最初に試してみることにしました。

これまでのところ、これらのパイプには 2 つの問題があります。

  1. 子プロセスから別のアプリケーションを実行するように execlp を取得する方法がわかりません
  2. できたとしても、親プロセスにしかブレークポイントを設定できなかったのでデバッグが大変

これらの問題には理由があると確信しています。それらを忘れて名前付きパイプを使用するだけで、各アプリケーションをEclipseの個別のインスタンスでデバッグできるようにすることが理にかなっているのかどうか疑問に思い始めています。

関連情報があれば教えてください。私が使用しているコードは、基本的にtldp.orgで見つけたものです。

編集 - 質問の名前を、UNIXパイプ全般に関するものに変更しました。名前付きパイプの場合、fork() を使用する必要はないと想定していましたが、これまでに見たすべての例で使用する必要がありました。したがって、半二重または名前付きパイプに関係なく、子プロセスを何らかの形でデバッグできるようにする必要があります!

EDIT #2 --この例は、名前付きパイプに関して以前 (IBM リンクで) 見たことが必ずしも真実ではないことを明確に示しています。

4

1 に答える 1

1

次の 2 つのツールをお勧めします。

  • strace -ffすべての重要なイベントのトレースを提供し、何が起こっているか、つまりすべての読み取りと書き込みを詳細に調べることができます。

  • lsof関連するプロセスのファイル記述子をダンプして、何が他に何に接続されているかを明確に示すことができます。特に、close()いくつかの記述子を忘れて全体がデッドロックしている場合は特にそうです。

于 2013-05-31T09:47:28.943 に答える