關(guān)于Linux C函數(shù)kill,查看幫助文檔,執(zhí)行成功則返回0,如果有錯誤則返回-1。 可是執(zhí)行了Kill后返回值為0,為什么用PS命令查看該進程還存在啊。請問這是怎么回事?該進程是通過在fork出的子進程中調(diào)用execvp生成的。用ps命令查看,該進程帶中括號,即[test]pid_t pid = fork()if(pid == 0) //子進程{execvp("test",arglist,NULL)}else if(pid>0){// 父進程}else{//error}
2 回答

揚帆大魚
TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
kill 這個命令指示發(fā)送一個SIGNAL 給進程.
發(fā)送成功就返回 0 .但是程序接收到信號后會怎么處理 kill 是不管的.
就是說無論kill 是不是返回 0. 進程都有可能繼續(xù)運行.

慕少森
TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
你是程序中調(diào)用kill函數(shù),還是在命令行調(diào)用kill命令?
int kill(pid_t pid, int sig); 函數(shù)有兩個參數(shù),一個是進程號,一個是信號
如果你輸入的進程號是正確的,而進程還在,則信號有可能被該進程忽略了,不知道你發(fā)送的信號是幾號? 只有SIGKILL SIGSTOP不能被忽略,其它都可以忽略或捕捉。
- 2 回答
- 0 關(guān)注
- 987 瀏覽
添加回答
舉報
0/150
提交
取消