目录
一、kill()函数的使用
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid,int sig);
-功能:给任何进程或者进程组pid发送任何信号sig
-参数:
-pid:
>0:将信号发送给指定的进程;
=0:将信号发送给当前的进程组;
=-1:将信号发送给每一个有权限接收这个信号的进程;
<-1:这个pid=某个进程组的ID取反(-12345)
-sig:需要发送的信号的编号或者是宏值,0表示不发送任何信号
kill(getppid(),9);
kill(getpid(),9);
二、raise()函数的使用
#include <signal.h>
int raise(int sig);
-功能:给当前进程发送信号
-参数:
-sig:要发送的信号
-返回值:
-成功:0
-失败:非0
kill(getpid(),sig);
三、abort()函数的使用
#include <stdlib.h>
void abort(void);
-功能:发送SIGABRT信号给当前的进程,杀死当前进程
kill(getpid(),SIGABRT);
代码示例:
1 #include <sys/types.h>
2 #include <stdio.h>
3 #include <signal.h>
4 #include <unistd.h>
5 int main()
6 {
7 pid_t pid=fork();
8 if(pid==0)
9 {
10 //子进程;
11 for(int i=0;i<5;++i)
12 {
13 printf("child process\n");
14 sleep(1);
15 }
16 }
17 else if(pid>0)
18 {
19 //父进程;
20 printf("parent process\n");
21 sleep(2);
22
23 kill(pid,SIGINT);
24 printf("kill child\n");
25 }
26 }
输出结果为:
两个进程对cpu进行争夺,谁速度快谁就先运行。