在linux c中,如何在乙個父程序中呼叫kill殺死全部的子程序
1樓:梔子花開淡淡地
你是程式中呼叫kill函式,還是在命令列呼叫kill命令?
int kill(pid_t pid, int sig); 函式有兩個引數,乙個是程序號,乙個是訊號。
如果你輸入的程序號是正確的,而程序還在,則訊號有可能被該程序忽略了,不知道你傳送的訊號是幾號? 只有sigkill sigstop不能被忽略,其它都可以忽略或捕捉。
linux想寫乙個指令碼,通過給定的程序名稱殺掉這個程序和他的所有子程序,包括子程序的後續
2樓:藍之夏
你要的這個功能可以換成程序組的思路可以這樣寫。
ps -ef|grep $|head -1|awk ''|xargs -i {}kill -9 -{
照你原來的思路想把所有子程序都查出來反而麻煩。
3樓:神
這是不是問題, 用shell 和python都可以搞定, 如果需要的話, 可以幫忙寫乙個。同時 我還有很多的使用的shell和python指令碼。
希望可以幫到大家。
4樓:柒年
這個好難~ 你得找乙個專業程式設計的幫你,估計還是要收費的。
在 linux中如何結束由乙個父程序產生的所有子程序
5樓:網友
父程序未結束,子程序先結束,會產生殭屍程序。
子程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷燬,而是留下乙個稱為殭屍程序(zombie)的資料結構(系統呼叫 exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷燬)。
即使是root身份kill -9也不能殺死殭屍程序。補救辦法是殺死殭屍程序的父程序(殭屍程序的父程序必然存在),殭屍程序成為"孤兒程序",過繼給1號程序init,init始終會負責清理殭屍程序。
殭屍程序的避免:
1) 父程序通過wait和waitpid等函式等待子程序結束,這會導致父程序掛起。
2) 如果父程序很忙,那麼可以用signal函式為sigchld安裝handler,因為子程序結束後, 父。
程序會收到該訊號,可以在handler中呼叫wait**。
3) 如果父程序不關心子程序什麼時候結束,那麼可以用signal(sigchld, sig_ign) 通知內。
核,自己對子程序的結束不感興趣,那麼子程序結束後,核心會**, 並不再給父程序傳送。
訊號。(4) 還有一些技巧,就是fork兩次,父程序fork乙個子程序,然後繼續工作,子程序fork一 個孫進。
程後退出,那麼孫程序被init接管,孫程序結束後, init會**。不過子程序的** 還要自己。
做。 建議你使用第三種方法,父程序直接忽略子程序的結束,留給核心作**處理。這樣就不。
會產生殭屍程序。
6樓:萬年長長青
linux 父程序關閉子程序。
7樓:網友
採用ps + grep + awk + pkill命令組合,可實現「結束由乙個父程序產生的所有子程序」,如:
父程序名為 parent_proc,可先根據程序名稱,得到程序pidps -ef |grep parent_proc|egrep -v grep | awk ''
根據父程序pid終止所有子程序pid,保留父程序pkill -9 -p $p_pid
完整指令碼:for p_pid in `ps -ef |grep parent_proc|egrep -v grep | awk ''`
dopkill -9 -p $p_pid
done有關各命令的詳情介紹請查閱相關參考資料。
8樓:網友
killall命令殺死同一程序組內的所有程序。它要指定要終止的程序的名稱,而非pid。
linux中,如果乙個程序的父程序被殺死了,其父程序的id將會變為什麼
9樓:網友
則子程序的父程序 id 變為 1,即 init fork()的。會產生乙個新的子程序, 其子程序會複製父程序的。
同時該子程序將會變為殭屍程序。
10樓:愛笑的七小沐
如果父程序先退出,子程序會變成孤兒程序,並交給程序號為1的託管;如果子程序退出,但是父程序沒有呼叫wait或者waitpid對子程序的狀態進行**,那麼子程序還存在於系統中,並仍然佔用乙個程序號,此時此程序就會變成殭屍程序。樓主殭屍程序和孤兒程序概念混淆。
如何完全殺掉帶鎖的程序並釋放資源
11樓:蘇小素
首先使用ps -ef命令確定要殺死程序的pid,然後輸入以下命令:
# kill -pid
註釋:標準的kill命令通常都能達到目的。終止有問題的程序,並把程序的資源釋放給系統。
然而,如果程序啟動了子程序,只殺死父程序,子程序仍在執行,因此仍消耗資源。為了防止這些所謂的「殭屍程序」,應確保在殺死父程序之前,先殺死其所有的子程序。
確定要殺死程序的pid或ppid
# ps -ef | grep httpd
結束程序。# kill -l pid
l選項告訴kill命令用好像啟動程序的使用者已登出的方式結束程序。當使用該選項時,kill命令也試圖殺死所留下的子程序。但這個命令也不是總能成功--或許仍然需要先手工殺死子程序,然後再殺死父程序。
給父程序傳送乙個term訊號,試圖殺死它和它的子程序。
# kill -term ppid
killall命令。
killall命令殺死同一程序組內的所有程序。其允許指定要終止的程序的名稱,而非pid。
# killall httpd
停止和重啟程序。
有時候只想簡單的停止和重啟程序。如下:
# kill -hup pid
該命令讓linux和緩的執行程序關閉,然後立即重啟。在配置應用程式的時候,這個命令很方便,在對配置檔案修改後需要重啟程序時就可以執行此命令。
一下子開心一下子發火是什麼成語,形容一下子從不開心到很開心的成語是什麼
喜怒無常 x n w ch ng 解釋 一會兒高興,一會兒生氣。形容態度多變。出處 呂氏春秋 回 誣徒 答 喜怒無處,言談日易。結構 主謂式。用法 含貶義 多用於人 也可用於動物或其他物。一般作謂語 賓語。正音 常 不能讀作 c n 辨形 常 不能寫作 長 近義詞 喜怒哀樂 喜形於色 反義詞 一成不...
請用一下子造句,謝謝,用「一下子」造句
自己的考試成績出來了,結果發現自己是全班第一名,我連忙看了看我的成績,結果我一下子高興壞了 我剛扶起了摔倒的老人,他剛站起來一下子抓住我說,賠錢 天氣多變,一下子晴空萬里,一下子狂風暴雨!媽媽做家務很麻利,一下子就做完了家務!她的臉一下子紅了,紅得像一朵含苞的石榴花。一下子,雨就像斷了線的珠子,一個...
戒菸別一下子戒乾淨,一下子戒菸好嗎
可以試試勁克電子煙代替吸菸 滿足吸菸的口感,同時可以控制煙油濃度來慢慢戒掉吸菸的習慣 戒菸一下子戒掉好不好 沒有不好,只有好處,身體通過代謝調整會慢慢修復菸草帶給你身體上的傷害。慢慢戒菸好還是一下子戒菸好 戒菸妙方 一小塊白豆腐,加大約3匙紅糖,拌著吃,挺管用的,我爸爸就是這樣戒掉的,好幾個月都不抽...