fork関数
1. 親プロセスがfork()関数を呼ぶ
2. 子プロセス用メモリ領域を確保してそこに親プロセスのメモリをコピー
3. 親子ともにプロセスはfork()関数から復帰。fork()関数の戻り値は親と子では違い、処理が分岐できる
https://scrapbox.io/files/6354ff700dc644001d4c58fd.png
複数のスレッドが存在しているときでもfork()を呼び出したスレッド以外ではコピーされない、という落とし穴もある
ロックしてトランザクションで守られたデータを修正しているスレッドが突如なくなるとロックが外されなくなる
fork(), exec() の間では例外などが発生するシステムコールは使えない