虽然从函数的表面意思上看是杀死进程, 但是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

阅读(3034) | 评论(0) | 转发(0) |

Logo

更多推荐