about 4 years ago

我是谷阿莫,今天要來講一個孤兒怨的故事。

某天「長得一臉我超屌的Unix星球主角A」閒閒沒事幹生了一個「我超淫亂小孩B」

並期待「我超淫亂小孩B」未來能有什麼美好的光景

但糟糕的是「我超淫亂小孩B」人如其名,超淫亂

一出生馬上跟人亂搞生出了C

因此「我超淫亂小孩B」立刻精盡人亡死掉了

喔你不要問我為什麼一出生馬上又能懷孕生小孩

主角威能你懂嗎?這可不是你們愚蠢人類能懂der~

因為B死前沒有留下任何訊息告訴A說他生了小孩

於是C就成為了孤兒,很悲憤,就跑去當孤兒怨的主角

最後孤兒怨C變成了小惡魔(daemon),這就是孤兒怨的由來,科科

故事講完了 直接將上面的故事翻譯成C code

// 主角A生了小孩B
pid_t child = fork();
if (child > 0) {
  // 主角A期待B有所作為
  wait(NULL); 
} else ( child == 0 ) {
  // B一出生後卻馬上生小孩
  pid_t grandchild = fork();
  if (grandchild > 0) {
    // 所以B精盡人亡了
    exit(0);
  } else if (grandchild == 0 ){
    // 於是孤兒怨 C在這裡產生了...
    execl("/bin/ls", "ls", "-al");
  } else {
    printf("B難產\n");
  }
} else {
  printf("A難產\n");
}

這時C就是一個daemon,其parent會變成init process (pid=1)
這時如果C死掉,不會成為zombie process,因為殭屍和惡魔不一樣
大魔王如果自己死掉就是死掉,電影就結束了,人類又戰勝了!好棒棒

daemon你去查Google會發現他剛好叫小惡魔,但又可以是小精靈,意思是看不見,不屬於任何人,不受他人擺佈這樣
不過有人把它翻譯成「守護進程

但需要時,還是可以傳送訊號(signal)給小惡魔做溝通,科科

← 在Swift下用內建SDK產生UUID的兩種方式
 
comments powered by Disqus