3.13信号编程(第二阶段)
代码展示
signalDemo1.c
gcc signalDemo1.c -o pro
#include <signal.h>
#include <stdio.h>
// typedef void (*sighandler_t)(int);
// sighandler_t signal(int signum, sighandler_t handler);
void handler(int signum)
{
printf("get signum%d\n",signum);
switch(signum){
case 2:
printf("SIGINT\n");
break;
case 9:
printf("SIGKILL\n");
break;
case 10:
printf("SIGUSR1\n");
break;
}
printf("never quit\n");
}
int main()
{
signal(SIGINT,handler);
signal(SIGINT,handler);
signal(SIGUSR1,handler);
while(1);
return 0;
}
signalDemoCON.c
gcc signalDemoCON.c
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
// int kill(pid_t pid, int sig);
// typedef void (*sighandler_t)(int);
// sighandler_t signal(int signum, sighandler_t handler);
int main( int argc,char **argv)
{
int signum;
int pid;
char cmd[128]={0};
signum = atoi(argv[1]);
pid = atoi(argv[2]);
printf("num=%d,pid=%d\n",signum,pid);
// kill(pid,signum);
sprintf(cmd,"kill -%d %d",signum,pid);
system(cmd);
printf("send signal ok\n");
return 0;
}