C语言中操作进程信号的相关函数使用详解
C语言signal()函数:设置信号处理方式 #include <signal.h> 定义函数: void (*signal(int signum,void(* handler)(int)))(int); 函数说明:signal()会依参数signum 指定的信号编号来设置该信号的处理函数. 当指定的信号到达时就会跳转到参数handler 指定的函数执行. 如果参数handler 不是函数指针,则必须是下列两个常数之一: 关于信号的编号和说明,请参考附录D 返回值:返回先前的信号处理函数指针,如果有错误则返回SIG_ERR(-1). 附加说明:在信号发生跳转到自定的 handler 处理函数执行后,系统会自动将此处理函数换回原来系统预设的处理方式,如果要改变此操作请改用sigaction(). C语言kill()函数:传送信号给指定的进程 #include <sys/types.h> #include <signal.h> 定义函数:int kill(pid_t pid,int sig); 函数说明:kill()可以用来送参数sig 指定的信号给参数pid 指定的进程。参数pid 有几种情况: 返回值:执行成功则返回0,如果有错误则返回-1. 错误代码: 范例 #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> 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 process receive signal %dn",WTERMSIG(status)); } } 执行: sen signal to child process(3170) Hi I am child process! child process receive signal 6 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |