fork関数

うーむ、挙動が謎だな。
スレッドならまだなんとなくわかるんだけど。
forkを呼び出した時点で処理がどこに移るんだろ?
子プロセスができるのはわかるんだけど、子プロセスって親プロセスとまったく同じプログラムを立ち上げるということでいいのか?
仮にその前提でいくと、子プロセスの処理はどこからはじまるわけ?
main関数のしょっぱなから?
それとも、fork文のところから?
親プロセスの方はどうなるんだろう?
forkの後に続く処理を普通に実行していくのかな?
サンプルプログラムによると、forkの戻り値で、親プロセスか子プロセスかを判断してるみたいだけど・・・。
ということは、子プロセスの開始位置はfork文のところからみたいだな。
親プロセスには、forkの戻り値として子プロセスのPIDが返ってきて、子プロセスには0が返ってくる。
でforkの戻り値に応じて、親の場合と子の場合の処理を書いておけばいいということか。
するってーと、forkを実行するソースコードは親子で同一のものを使うという事か。
あー、見えてきたわ。
変数の共有とかはどうなってんだろ・・・。
fork実行時の親プロセスの変数内容は子にも引き継がれるのか?
子プロセスでの変更が親に影響するってことはないよな・・・・?
その辺を潰せば、forkの挙動は理解したことになるかな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です