//signal函数绑定一个捕获函数后会自动执行绑定的捕获函数,
//并且把信号编号作为传参传递给捕获函数
/* #include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
RETURN VALUE
signal() returns the previous value of the signal handler, or SIG_ERR
on error. In the event of an error, errno is set to indicate the
cause.
*/
/*
#include<stdio.h>
#include <signal.h>
typedef void (*sighandler_t)(int);
void func(int sig)
{
if(sig!=SIGINT)
return;
printf("func for signal:%d.\n",sig);
}
int main(void)
{
signal(SIGINT, func);
printf("before while(1).\n");
while(1);
printf("after while(1).\n");
return 0;
}
//结果为:执行后,按ctrl+c可看到func函数的输出内容即信号编号
*/
//***************************************************************
/*
#include<stdio.h>
#include <signal.h>
#include<stdlib.h>
typedef void (*sighandler_t)(int);
int main(void)
{
sighandler_t ret = (sighandler_t)-2;
signal(SIGINT, SIG_IGN);
if (SIG_ERR == ret)
{
perror("signal:");
exit(-1);
}
printf("before while(1).\n");
while(1);
printf("after while(1).\n");
return 0;
}
//结果为:执行后,按ctrl+c无任何显示,因为你绑定的处理函数为忽略处理
*/
//以上两个程序终止方法:打开另一个客户端,输入ps -aux 查看./a.out的进程id
//再输入kill -9 id号 ,可以强制杀死以上程序