信号编程

参考原文地址:https://www.jianshu.com/p/f445bfeea40a

通过命令  :kill -l 来查看信号的名字和编号   如下:

其中每个信号名字的前面都是其编号

 

 信号函数的函数原型是这样的

sighandler_t signal(int signum, sighandler_t handler);
返回值类型     函数名字   整型函数编号    调用的函数

下面是一个老师的demo

#include <signal.h>
#include <stdio.h>
		//typedef void (*sighandler_t)(int);

   //    sighandler_t signal(int signum, sighandler_t handler);
void hander(int signum)
{
	printf("get signum =%d\n",signum);
	printf("never quit\n");
	switch(signum)
	{
		case 2:
			printf("SIGINT\n");
			break;
		case 9:
			printf("SIGKILL\n");
			break;
		case 10:
			printf("SIGUSR1\n");
			break;
	}
}

int main()
{
	signal(SIGINT,hander);
	signal (SIGKILL,hander);
	signal (SIGUSR1,hander);
	while(1);
	return 0;
}

 

 编译后并执行后,由于while程序卡住了,进程不会结束,可以通过 命令:

ps  -aux |grep ./aout

结果:

 

我这里的可执行问件事    jc

左边开始的第一串数字是进程的pid号码,要是要结束该进程   用过命令

1 kill  -(signum)   (pid)
2         号码            pid号码

 

posted @ 2020-08-12 11:15  辉白  阅读(35)  评论(0)    收藏  举报