👻
親プロセス 子プロセス
-
プロセスはforkと呼ばれる操作を行うことで、他のプロセスを生成することができる。
-
親プロセス
- 新しいプロセスを生成したプロセス
-
子プロセス
- 新しく生成されたプロセス。ほとんど親プロセスのコピーであるが、プロセスID(PID)が異なる。

親プロセス/子プロセスのPID
以下のようなコードで、親プロセスと子プロセスのプロセスID(PID)が異なることを確認できる
fork.py
import os
# fork()で、親プロセスを複製する形で子プロセスを生成
# fork()が実行される前は1つだったプロセスが、実行後は2つ(親プロセス・子プロセス)に分裂する。
# 分裂したそれぞれのプロセスが、fork()の後ろの残りのプログラムを実行していく
# fork()の戻り値pid↓
# 親プロセスで実行された場合:新しく生成された子プロセスのPID
# 子プロセスで実行された場合:0
pid = os.fork()
# 親プロセス
if pid > 0:
# getpid()は現在のプロセスのPIDを返す
print("Fork above 0, PID:", os.getpid())
# 親プロセスで実行された場合、pidには新しく生成された子プロセスのPIDが代入されている
print("Spawned child's PID:", pid)
# 子プロセス
else:
print("Fork is 0, this is a Child PID:", os.getpid())
# getppid()は現在のプロセスの親プロセスのPIDを返す
print("Parent PID:", os.getppid())
ターミナル
$ python3 fork.py
Fork above 0, PID: 81303
Spawned child's PID: 81304
Fork is 0, this is a Child PID: 81304
Parent PID: 81303
参考
Discussion