我对这个信号主题比较陌生,所以想知道当按下ctrl + c时SIGABRT是否由SIGINT等关键命令生成。 任何帮助都会很棒。 继承了我写的代码:
#include<stdio.h>
#include <sys/types.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>
int c=0;
void hand(int signo)
{
if(signo==SIGINT)
{
c++;
printf("Why the fuck are you interputing me?\n");
}
if(signo==SIGABRT)
{
printf("Why the fuck are you aborting me?bitch!!\n");
kill(getpid(),SIGABRT);
//exit(0);
}
if(signo==SIGKILL)
{
printf("Why the fuck are you killing me?\n");
kill(getpid(),SIGKILL);
}
if(c>5)
{
printf("You execute too many fucking times!!..so now die\n");
kill(getpid(),SIGKILL);
}
}
void main()
{
int i;
if(signal(SIGINT,hand)==SIG_ERR)
printf("Error in catching SIGINT\n");
if(signal(SIGABRT,hand)==SIG_ERR)
printf("Error in catching SIGABRT\n");
if(signal(SIGKILL,hand)==SIG_ERR)
printf("Error in catching SIGKILL\n");
for(i=1;i<50;i++)
{
printf("I'm sleeping...\n");
sleep(2 );
printf("SIGINT sent %d times",c);
}
}
答案 0 :(得分:0)
从终端
执行以下命令 killall -SIGABRT <your-process>