看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《ppp168p (時光暫停)》之銘言: : 大家好: : 我利用fork指令後,利用exec指令執行外部指令播放一首歌 : 目前我利用system( kill childpid<-代表子行程id),結束掉這子行程 : ,但是當結束子行程後,我利用ps -ax 檢查目前系統存在的process : 我發現被kill的子行程變成了 zombie的狀態!! : 我想要請問一下大家~我該怎樣子殺掉這子行程且不會變成zombie狀態! 1. 用 kill(child_pid, SIGKILL) 即可 不需要 system 2. 用 waitpid 來回收結束的 child process status 少了這一步就會產生 zombie process -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.28.57
Lwms:謝謝賜教 03/29 17:04
ppp168p:可以請問該怎樣子用waitpid回收child process status 03/29 17:57
LPH66:fork的回傳值在父行程中是子行程的pid 丟給waitpid即可 03/29 17:59
ppp168p:waitpid後面還有兩個參數該怎樣下呢!!? 03/29 18:02
ppp168p:google後我找到 waitpid(child_pid,&stat,WNOHANG); 03/29 18:05
ppp168p:這一行要接在kill(child_pid, SIGKILL)下面嗎@@? 03/29 18:10
ppp168p:我目前是直接接在下面~但結果也是一樣@@" 03/29 18:11
ppp168p:26745 pts/1 Z+ 0:00 [aplay] <defunct> 03/29 18:12