作者Fonger (水餃)
看板C_and_CPP
標題[分享] 孤兒怨 ( unix daemon process )
時間Mon Nov 23 20:07:21 2015
我是谷阿莫,今天要來講一個孤兒怨的故事
某天「長得我一臉超屌的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在這裡產生了...成了daemon小惡魔
execl("/bin/ls", "ls", "-al");
} else {
printf("B難產\n");
}
} else {
printf("A難產\n");
}
這時C就是一個daemon,其parent 會變成 init (pid=1)
這時如果C執行完會死掉,不會成為zombie process
因為殭屍和惡魔不一樣
魔王死掉就是死掉,電影就結束了,人類又獲勝了好棒棒
C結束後,系統會自動回收關掉process
daemon你去查google會發現他剛好叫小惡魔,但又可以是小精靈
意思是看不見,不屬於任何人,不受擺佈這樣
有人把它翻譯成「守護進程」
(
https://zh.wikipedia.org/wiki/%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B)
有需要時,可以跟惡魔用訊號(signal)溝通哦
以上是 unix 新手的淺見
請大家鞭小力一點
另外其實可以直接用daemon這function直接做
不過它的原理就是這樣達成的 科科
圖文好讀版:(code 有highlight)
http://fonger.logdown.com/posts/2015/11/23/orphans-daemon-unix-programming
--
子貢問政。
子曰:「足食,足兵,民信之矣。」
子貢曰:「必不得已而去,於斯三者何先?」
曰:「去兵。」
子貢曰:「那甜度要調整嗎?」 ─你不可不知的論語奇聞軼事《顏淵第十二》
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.220
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1448280449.A.E9D.html
※ 編輯: Fonger (140.113.136.220), 11/23/2015 20:09:01
→ KJFC: ... 11/23 20:13
→ x000032001: 討厭古阿莫= =... 11/23 20:16
推 layan: 有笑有推 11/23 23:26
噓 CaptainH: 竟然有人模仿古阿莫的弱智化運動 11/24 13:52
→ Fonger: 呵呵 提醒樓上請注意語氣歐 11/24 17:29
推 final01: 還不錯啊~ 11/24 19:21
→ MOONRAKER: 然有人模仿古阿莫的○○化○○ 11/24 22:29
推 bearbox: 滿好笑的啊 11/25 13:09
→ uranusjr: Daemon 翻譯成小惡魔是錯譯, 一般沒有善惡分別 11/25 13:44
推 qsort: 我反而比較想知道殭屍的做法 11/25 20:08
推 LPH66: 父母還在但不管小孩,小孩死了爸媽沒來火化就會變殭屍 11/25 21:22
推 qsort: 可以來段sample code嗎? 11/25 21:52
推 LPH66: 原 PO 的 code 裡 A 的 wait 拿掉 B 就變成殭屍了 11/25 22:05
推 Clangpp: 雖然我不喜歡谷阿莫 但是還是給推拉 11/26 10:11
推 wulouise: Daemon一意同demon另一個則是有點像神子(神生的小孩!=神 11/29 20:54
推 LPH66: 不過 Unix 的 daemon 一詞出處倒不是直接從這裡來的就是了 11/30 00:20
※ 編輯: Fonger (140.113.69.228), 12/01/2015 12:13:40
推 xxxx9659: 有學有推 12/19 03:34