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);
- printf("parent process send signal!\n");
- waitpid(pid,NULL,0);
- printf("son process exit!\n");
- exit(0);
- }
- }
6输出 son process wait for signal! parent process send signal! son process exit!
|