forkについて学ぶ

ようやくこの近辺に来つつある。psコマンドを叩いたときなんでbashだのcshだのが出ているんだろうと思っていたが少しずつ理解できてきたような気がする。
以下のコードはFreeBSDで動作しました。

#include <stdio.h>
#include <stdlib.h>

void child_code(int delay){
  printf("childpid is %d\n", getpid());
  sleep(delay);
  exit(0);
}
void parent_code(int childpid){
  int wait_val;
  wait_val = wait(NULL);
  printf("childpid was %d and wait_val is %d\n", childpid, wait_val);
}

int main(){
  int newpid;
  printf("parent pid is %d\n", getpid());
  if((newpid = fork()) == -1)
    perror("fork");
  else if(newpid == 0)
    child_code(2);
  else
    parent_code(newpid);
  return 0;
}

Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス
売り上げランキング: 18985
おすすめ度の平均: 5.0
5 深く掘り下げる良書