进程信号:
原理:是一种中断机制,或者说是一种事件通知机制,在这里讲的是软件中断,通过信号通知进程发生了某个事件,打断进程当前的操作,去处理事件。
一个信号对应一个事件,并且信号必须能够被识别
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#include //getpid sleep #include //SIGINT #include //kill int main(int argc,char *argv[]) //运行参数个数 运行参数首地址 { //int kill(int pid,int sig); //给指定信号发送指定信号 kill(getpid(),SIGINT); //getpid:获取自身pid kill:给自身进程发送一个终止信号 while(1){ printf("今天你开心吗n"); sleep(1); } return 0; }
#include#include //getpid sleep #include //SIGINT #include //kill int main(int argc,char *argv[]) //运行参数个数 运行参数首地址 { //int kill(int pid,int sig); //给指定信号发送指定信号 //kill(getpid(),SIGINT); //getpid:获取自身pid kill:给自身进程发送一个终止信号 raise(SIGINT); //给调用进程发送指定信号 while(1){ printf("今天你开心吗n"); sleep(1); } return 0; }
#include#include //getpid sleep #include //SIGINT #include //kill int main(int argc,char *argv[]) //运行参数个数 运行参数首地址 { //int kill(int pid,int sig); //给指定信号发送指定信号 //kill(getpid(),SIGINT); //getpid:获取自身pid kill:给自身进程发送一个终止信号 //raise(SIGINT); //给调用进程发送指定信号 alarm(4); //定时器 while(1){ printf("今天你开心吗n"); sleep(1); } return 0; }
#include#include //getpid sleep #include //SIGINT #include //kill int main(int argc,char *argv[]) //运行参数个数 运行参数首地址 { //int kill(int pid,int sig); //给指定信号发送指定信号 //kill(getpid(),SIGINT); //getpid:获取自身pid kill:给自身进程发送一个终止信号 //raise(SIGINT); //给调用进程发送指定信号 //alarm(4); //定时器 abort(); while(1){ printf("今天你开心吗n"); sleep(1); } return 0; }



