フォーク呼び出しの後、両方のプロセスは同じPIDを持ちます。

フォーク呼び出しの後、両方のプロセスは同じPIDを持ちます。

fork文書によると(man 2 fork):

子プロセスは、次の点を除いて親プロセスと同じです。

  • 子プロセスには一意のプロセスIDがあり、このPIDは既存のプロセスグループ(setpgid(2))のIDと一致しません。

もしそうなら、これは2つの異なるプロセスグループに属する2つのプロセスが同じPIDを持つことを意味しますか?これは私にはわかりませんが、fork既存のPGIDと同じ新しいPIDがないように強制されるため、フォークで新しく作成されたプロセスと同じPIDを持つ非リーダープロセスがある可能性があります。そうではありませんか?

ベストアンサー1

プロセスIDは一意です。

すべてPOSIXfork()ドキュメント:

説明する

fork() 関数は新しいプロセスを生成する必要があります。新しいプロセス(子プロセス)は、以下に詳述する場合を除き、呼び出しプロセス(親プロセス)の正確なコピーでなければなりません。

  • 子プロセスには一意のプロセスIDが必要です。
  • 子プロセスIDは、アクティブなプロセスグループIDとも一致しないでください。
  • 子プロセスには、呼び出しプロセスのプロセスIDである別の親プロセスIDが必要です。

...

おすすめ記事