参数 pid 有几种情况: pid>0 将信号传给进程识别码为 pid 的进程。 pid=0 将信号传给和目前进程相同进程组的所 有进程 pid=-1 将信号广播传送给系统内所有的进程 pid<0 将信号传给进程组识别码为 pid 绝对值 的所有进程 参数 sig 代表的信号编号可参考附录 D 返回值 错误代码 执行成功则返回0,如果有错误则返回-1。 EINVAL 参数 sig 不合法 ESRCH 参数 pid 所指定的进程或进程组不存在 EPERM 权限不够无法传送信号给指定进程 范例 #include #include #include #include main() { pid_t pid; int status; if(!(pid= fork())){ printf(“Hi I am child process!\n”); sleep(10); return; } else{ printf(“send signal to child process (%d) \n”,pid); sleep(1); kill(pid ,SIGABRT); wait(&status); if(WIFSIGNALED(status)) printf(“chile } } 执行 sen signal to child process(3170) Hi I am child process! child process receive signal 6 process receive signal %d\n”,WTERMSIG(status)); pause(让进程暂停直到信号出现) 相关函数 表头文件 定义函数 函数说明 kill,signal,sleep #include int pause(void); pause()会令目前的进程暂停(进入睡眠状态) , 直到被信号(signal)所中断。 返回值 错误代码 只返回-1。 EINTR 有信号到达中断了此函数。 sigaction(查询或设置信号处理方式) 相关函数 表头文件 定义函数 signal, sigprocmask, sigpending, sigsuspend #include int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact); 函数说明 sigaction()会依参数 signum 指定的信号编号 来设置该信号的处理函数。