1

C でシェルを作成しています。ジョブごとに新しいプロセス グループを設定しようとしています。各パイプラインの最初のプロセスがジョブのプロセス グループのリーダーになり、他のプロセスはリーダーのプロセス グループに参加します。

したがって、この場合、cat somefile | wcプロセスcatはプロセス リーダーになります。

を使用してこの動作を実現するにはどうすればよいsetpgidですか? 各プロセスをループしている場合、最初の fork の値を保存し、pidそれをループの後続の繰り返しのグループ ID として使用して、適切なプロセス グループ ID を子クラスに設定する必要がありますか?

4

1 に答える 1

0

私があなたなら、親が受け取る fork() pid を取得して、setpgid(child_pid,your_gid); を実行します。getpgid(0) を使用して、グループ ID を返すことができます。これら 2 つの情報を使用して setpgid() を実行します。

于 2012-11-19T20:18:06.677 に答える