表題の通り、fork関数の動作がわかっておりませんので教えてください。
調べたところ下記のコードで出力結果が次のようになるそうです。
出力結果
parents
child
通常のプログラムの考え方で行くとif, else-if,elseのいずれかの処理をして終了という
認識でいましたがそうでないみたいです。
fork()関数が親プロセスから子プロセスを複製をするという動作機構なのは
理解しましたが下記のプログラムでどのような動作をしているか教えていただけないでしょうか?
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> // fork #include <unistd.h> // fork #include <err.h> #include <errno.h> int main(int argc, char *argv[]) { pid_t pid; pid = fork (); if (-1 == pid) { err (EXIT_FAILURE, "can not fork"); } else if (0 == pid) { // child puts ("child"); exit(EXIT_SUCCESS); } else { // parent puts ("parents"); } exit (EXIT_SUCCESS); }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/03 01:36