Linux进程通信 发送信号
2011-07-05 12:44
1196 查看
1. 信号 信号是软中断,用于一个或多个进程之间传递异步信号,如:按下某些终端键,硬件中断等。 2常见信号 SIGHUP 从终端上发出的结束信号 SIGINT 来自键盘的中断信号 SIGQUIT 来自键盘的退出信号 SIGFPE 浮点异常信号 3对信号的处理 <1> 忽略该信号 <2> 执行系统默认动作 <3> 捕捉信号 4发送与捕捉信号 kill()和raise() ---------------kill------------------ 头文件 #include<sys/types.h> #include<signal.h> 函数原型 int kill(pid_t pid,int sig); 函数说明 kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况: pid>0 将信号传给进程识别码为pid 的进程。 pid=0 将信号传给和目前进程相同进程组的所有进程 pid=-1 将信号广播传送给系统内所有的进程 pid<0 将信号传给进程组识别码为pid绝对值的所有进程 sig 信号种类 返回值 执行成功则返回0,如果有错误则返回-1。 ---------------raise------------------ 头文件 #include<signal.h> #include<sys/types.h> 函数原型 int raise(int sig) 函数说明 sig 系统信号 向正在执行的程序发送一个信号 5代码 kill父进程向子进程发送信号,
#include<sys/types.h> #include<sys/stat.h> #include<signal.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h> int main() { pid_t pid; pid=fork(); if(pid<0) { perror("fork() error\n"); } if(pid==0)/*子进程*/ { printf("son process wait for signal!\n"); pause();/*使调用进程挂起,直至捕捉到一个信号*/ }else/*父进程*/ { sleep(3); kill(pid,SIGKILL);/*向子进程发送SIGKILL信号*/ printf("parent process send signal!\n"); waitpid(pid,NULL,0);/*等待pid退出*/ printf("son process exit!\n"); exit(0); } }
6输出 son process wait for signal! parent process send signal! son process exit!
相关文章推荐
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)
- linux多进程——进程组与会话、守护进程、信号通信
- 【转载】linux杀死进程以及发送或响应信号
- Linux进程通信之信号
- Linux-进程间的通信-信号集函数【转】
- 【转载】linux杀死进程以及发送或响应信号
- Linux下信号通信实现A进程死循环输出A后被C进程处理输出C
- Linux 进程通信之 ——信号和信号量总结
- Linux c==进程通信--信号(5)
- linux线程通信信号以及进程通信信号
- linux下c编程进程通信-管道与信号
- Linux进程间通信--信号通信之信号发送捕捉kill()、raise()、alarm()、pause()及其基础实验
- linux---编程---进程通信---信号
- linux C++ 网络通信 -- Broken pipe,接收端突然断开,发送没收到,仍然发送消息,会导致进程崩溃
- linux 进程通信-信号学习总结(1)
- linux 进程间信号通知,线程间同步与通信 Test study Model