进程信号: 原理:是一种中断机制,或者说是一种事件通知机制,在这里讲的是软件中断,通过信号通知进程发生了某个事件,打断进程当前的操作,去处理事件。 一个信号对应一个事件,并且信号必须能够被识别 Linux下信号种类: 使用kill -l命令进行查看,62种 1~31号:非可靠信号;34-64号:可靠信号 信号的生命周期:产生,注册,注销,处理 产生: 硬件产生: ctrl+c,ctrl+\,ctrl+z 软件产生: kill命令发送一个信号给进程;示例: kill -sigid pid kill杀死进程的原理 是给进程发送了一个终止信号,进程处理信号的方式就是退出进程 int kill(pid_t pid, int sig); 给指定进程发送指定信号 int raise(int sig); 给调用进程发送指定信号 unsigned int alarm(unsigned int seconds); 设置定时器 void abort(void);
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
int main(int argc,char *argv[])
{
kill(getpid(),SIGINT);
while(1){
printf("今天你开心吗\n");
sleep(1);
}
return 0;
}
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
int main(int argc,char *argv[])
{
raise(SIGINT);
while(1){
printf("今天你开心吗\n");
sleep(1);
}
return 0;
}
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
int main(int argc,char *argv[])
{
alarm(4);
while(1){
printf("今天你开心吗\n");
sleep(1);
}
return 0;
}
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
int main(int argc,char *argv[])
{
abort();
while(1){
printf("今天你开心吗\n");
sleep(1);
}
return 0;
}
|