Linux下Kill函数用法
[ KILL ]功能描述:
用于向任何進程組或進程發送信號。
頭文件用法:
1??#include??<?sys?/?types.h?>
2?
3??#include??<?signal.h?>
4?
5??int??kill(pid_t?pid,??int??sig);
6?
7?
?
參數:
pid:可能選擇有以下四種
1. pid大于零時,pid是信號欲送往的進程的標識。
2. pid等于零時,信號將送往所有與調用kill()的那個進程屬同一個使用組的進程。
3. pid等于-1時,信號將送往所有調用進程有權給其發送信號的進程,除了進程1(init)。
4. pid小于-1時,信號將送往以-pid為組標識的進程。
sig:準備發送的信號代碼,假如其值為零則沒有任何信號送出,但是系統會執行錯誤檢查,通常會利用sig值為零來檢驗某個進程是否仍在執行。
返回值說明: 成功執行時,返回0。失敗返回-1,errno被設為以下的某個值 EINVAL:指定的信號碼無效(參數 sig 不合法) EPERM;權限不夠無法傳送信號給指定進程 ESRCH:參數 pid 所指定的進程或進程組不存在
#include < sys / wait.h > #include < sys / types.h > #include < stdio.h > #include < stdlib.h > #include < signal.h >int main( void ) {pid_t childpid;int status;int retval;childpid = fork();if ( - 1 == childpid ){perror( " fork() " );exit( EXIT_FAILURE );}else if ( 0 == childpid ){puts( " In child process " );sleep( 100 ); // 讓子進程睡眠,看看父進程的行為exit(EXIT_SUCCESS);}else{if ( 0 == (waitpid( childpid, & status, WNOHANG ))){retval = kill( childpid,SIGKILL );if ( retval ){puts( " kill failed. " );perror( " kill " );waitpid( childpid, & status, 0 );}else{printf( " %d killed\n " , childpid );}}}exit(EXIT_SUCCESS); }
[root@localhost?src]#?gcc?killer.c
[root@localhost?src]#?.?/?a.?out
In?child?process
4545??killed
在確信fork調用成功后,子進程睡眠100秒,然后退出。
同時父進程在子進程上調用waitpid函數,但使用了WNOHANG選項,
所以調用waitpid后立即返回。父進程接著殺死子進程,如果kill執行失敗,
返回-1,否這返回0。如果kill執行失敗,父進程第二次調用waitpid,
保證他在子進程退出后再停止執行。否則父進程顯示一條成功消息后退出。
原文地址:
https://blog.csdn.net/diegui9005/article/details/101895441?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Linux下Kill函数用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女性卵巢早衰如何治疗
- 下一篇: linux下成功安装ffmpeg( 亲测