在Linux系统中有很多种信号的发送函数,比如kill,raise,abort,以及pause等等,在这里把这几种常见的系统柜信号发送函数做一个总结和对比。
kill
kill函数的作用是给指定的进程发送信号,存在于函数库signall.h中
int kill(pid_t pid,int sig);
函数调用成功返回0,失败返回-1并设置errno
函数的两个参数,第一个表示进程号,表示向指定进程发送信号,第二个参数是信号编号。
根绝pid的取值,信号的发送范围不一样,大概可以分为四种
- pid>0,表示向指定的进程发送信号。
- pid=0,表示当前进程所属组的所有进程发送信号。
- pid=-1,表示向除了1号进程和当前进程的所有其他进程发送信号
- pid<-1,表示给进程pid所属的组发送信号
当然只有root用户才能向任意进程发送信号,一般用户只能向同用户进程或者当前进程组发送信号。
如果返回错误,并且errno为ESRCH表示指定进程