2017-06-02 13 views
0

子プロセスは、execlpで実行される別のCプログラムです。マシンはUnixです。私は子プロセスがexeclp("ps", "ps", NULL)でプロセステーブルにアクセスできることを知っていますが、どのようにして兄弟を決定できるのか分かりません。子プロセスが兄弟のPIDを取得することは可能ですか?

プロセスは非同期ですが、私は兄弟プロセスが実行されていることを知っています。

+0

まあ、[tag:c]に "* child *"をforkすることさえできません。だから、POSIX拡張を使ってCを意味すると仮定しよう。答えは** no **です。これは外部ツールや他のプラットフォーム固有のハッキングを呼び出すことなく可能です。これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)ですか? –

+1

これを見る実用的な方法はありません(もちろん、psの出力を解析することはできますが、ugh)。あなたは、兄弟姉妹から兄弟姉妹まで、または親から子供まで、それを伝える必要があります。なぜあなたが知る必要があるかを教えてくれれば、より具体的にできるかもしれません。 – zwol

+0

親のpidを取得するためにgetppidを実行してから、現在の子プロセスのpid(getpid)と一致しない有効なpidを打つまで、1を追加することは可能でしょうか? pidが有効かどうかを確認する方法はありますか? もっと実用的な方法は、子供が兄弟のデータを親に頼んで返す親パイプを持っていることですが、私は興味があります。 –

答えて

1

子プロセスが兄弟のPIDを取得することは可能ですか?

プロトコルの種類を使用して親と話をすることなく、移植可能ではありません。いくつかのシステムでは、それはまったく不可能かもしれません。

関連する問題