Re: [問題] 如何結束fork產生的子行程!!

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/03/29 17:03), 編輯推噓6(602)
留言8則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/29 17:04, , 1F
謝謝賜教
03/29 17:04, 1F

03/29 17:57, , 2F
可以請問該怎樣子用waitpid回收child process status
03/29 17:57, 2F

03/29 17:59, , 3F
fork的回傳值在父行程中是子行程的pid 丟給waitpid即可
03/29 17:59, 3F

03/29 18:02, , 4F
waitpid後面還有兩個參數該怎樣下呢!!?
03/29 18:02, 4F

03/29 18:05, , 5F
google後我找到 waitpid(child_pid,&stat,WNOHANG);
03/29 18:05, 5F

03/29 18:10, , 6F
這一行要接在kill(child_pid, SIGKILL)下面嗎@@?
03/29 18:10, 6F

03/29 18:11, , 7F
我目前是直接接在下面~但結果也是一樣@@"
03/29 18:11, 7F

03/29 18:12, , 8F
26745 pts/1 Z+ 0:00 [aplay] <defunct>
03/29 18:12, 8F
文章代碼(AID): #19ppbQZx (C_and_CPP)
文章代碼(AID): #19ppbQZx (C_and_CPP)