日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kill函数

發布時間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kill函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kill函數/命令產生信號

kill命令產生信號:kill -SIGKILL pid

kill函數:給指定進程發送指定信號(不一定殺死)

??? int kill(pid_t pid, int sig);????? 成功:0;失敗:-1 (ID非法,信號非法,普通用戶殺init進程等權級問題),設置errno

?????? sig:不推薦直接使用數字,應使用宏名,因為不同操作系統信號編號可能不同,但名稱一致。

??? pid > 0:? 發送信號給指定的進程。

?????? pid = 0:? 發送信號給 與調用kill函數進程屬于同一進程組的所有進程。

?????? pid < 0:? 取|pid|發給對應進程組。

?????? pid = -1:發送給進程有權限發送的系統中所有進程。

??? 進程組:每個進程都屬于一個進程組,進程組是一個或多個進程集合,他們相互關聯,共同完成一個實體任務,每個進程組都有一個進程組長,默認進程組ID與進程組長ID相同。

權限保護:super用戶(root)可以發送信號給任意用戶,普通用戶是不能向系統用戶發送信號的。 kill -9 (root用戶的pid)? 是不可以的。同樣,普通用戶也不能向其他普通用戶發送信號,終止其進程。 只能向自己創建的進程發送信號。普通用戶基本規則是:發送者實際或有效用戶ID == 接收者實際或有效用戶ID

/*** killmyself.c ***/ #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<signal.h>#define N 5int main() {int ret = kill(getpid(),SIGKILL);if(-1 == ret)exit(1);return 0; }

kill殺死指定子進程:

/*** killkid.c ***/ #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<signal.h>#define N 5int main() {int i;pid_t pid,q;for(i = 0; i < N; i++){pid = fork();if(0 == pid)break;if(2 == i){q = pid;}}if(i < 5){while(1){printf("I'm a child %d,getpid = %u\n",i,getpid());sleep(1);}}else{kill(q,SIGKILL);while(1);}return 0; }

運行結果中,第一輪由i = 2 的孩子,后面的都不會有該孩子了。

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/11320878.html

總結

以上是生活随笔為你收集整理的kill函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。