您的位置:首页 > 运维架构 > Linux

linux系统编程之信号 test10_8.c

2012-09-19 15:15 597 查看
#include<stdio.h>

#include <sys/types.h>

#include <unistd.h>

#include<signal.h>

#include <string.h>

//#include <stdarg.h>

void intermithandler(int signumber);

void continuehandler(int signumber);

void terminatehandler(int signumber);

int main(void)

{

char buffer[100];

if(signal(SIGINT,&terminatehandler)==SIG_ERR)

{

printf("Could not register signal handler!\n");

}

if(signal(SIGTSTP,&terminatehandler)==SIG_ERR)

{

printf("Could not register signal handler!\n");

}

if(signal(SIGCONT,&continuehandler)==SIG_ERR)

{

printf("Couldn¡¯t register signal handler!\n");

}

if(signal(SIGTERM,&terminatehandler)==SIG_ERR)

{

printf("Could not register signal handler!\n");

}

printf("Pid of This Process:%6d.\n",getpid());

for( ; ; )

{

fgets(buffer,sizeof(buffer),stdin);

if(strcmp(buffer,"intermit\n")==0)

{

raise(SIGINT);//向进程自身发送信号

}

else if(strcmp(buffer,"stop\n")==0)

{

raise(SIGTSTP);

}

else if(strcmp(buffer,"continue\n")==0)

{

raise(SIGCONT);

}

else if(strcmp(buffer,"quit\n")==0)

{

raise(SIGTERM);

}

else

{

printf("Your input is: %s\n\n",buffer);

}

}

return 0;

}

void intermithandler(int signumber)

{

printf("signal %d.;\n",signumber);

}

void continuehandler(int sinnumber)

{

printf("Continue code.\n");

}

void terminatehandler(int signumber)

{

if (signumber == SIGINT)

printf("signal SIGINT.\n");

else if (signumber == SIGTERM)

printf("signal SIGTERM.\n");

else if (signumber == SIGTSTP)

printf("signal SIGTSTP.\n");

return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: