Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140537
  • 博文数量: 25
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 232
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-04 16:25
文章分类

全部博文(25)

文章存档

2019年(1)

2018年(1)

2017年(14)

2015年(9)

我的朋友

分类: LINUX

2017-10-18 16:31:07

虽然从函数的表面意思上看是杀死进程, 但是kill函数不单单只是杀死进程,而是对指定进程或进程组发送指定信号(SIGKILL, SIG).
函数原型如下:
int kill(pid_t pid, int sig);
pid > 0  向pid指定的进程发送sig指定的信号.
pid == 0 向调用kill函数所在进程组中的所以进程发sig指定的信号.
pid == -1 向调用kill函数所在进程拥有权限的所有进程发宋sig信号,除了进程1(init).
pid < -1  向进程组id 为-pid 内的所有进程发送sig 信号.

返回值:成功返回0; 错误返回-1,并且errno会被设置相应的值.

如果sig == 0, 没有信号发送,但是错误检查还是会执行.sig=0, 可以被用于检查pid指定的进程或进程组是否存在.
如下:
if(kill(mClientPid, 0) == -1 && errno == ESRCH){
    printf("client process is dead!\n");
}


可以用命令行kill -l 查看所以信号
zhangpan-pc:/usr/include/c++/5.4.0$ kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX   

阅读(4852) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~