司机售票
来源:互联网 发布:日本视频聊天软件 编辑:程序博客网 时间:2024/06/10 08:35
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <signal.h>#include<unistd.h>int pid1,pid2;void initsi1(){ printf("lets gogo\n"); }void initsi2(){ printf ("stop the bus\n"); }void initsou(){ printf("please get off the bus\n"); }void intgo(){ kill(getppid(),SIGUSR1);}void intstop(){ kill(getppid(),SIGUSR2);}void intzz(){ kill(pid1,SIGUSR1);}int main (){ signal(SIGINT,SIG_IGN); signal(SIGQUIT,SIG_IGN); signal(SIGTSTP,SIG_IGN); while ((pid1=fork())==-1); if (pid1==0) { signal(SIGINT,intgo); signal(SIGQUIT,intstop); signal(SIGUSR1,initsou); while(1); wait(NULL); exit(0); } else{ signal(SIGUSR1,initsi1); signal(SIGUSR2,initsi2); signal(SIGTSTP,intzz); while (1); exit(0); }}
#include <signal.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>int pid;void func1( int signum ){switch( signum ){case SIGINT:kill(getppid(),SIGUSR1);break;case SIGQUIT:kill(getppid(),SIGUSR2);break;case SIGUSR1:printf("please get off the bus!\n");break;default:break;}}void func2( int signum ){switch( signum ){case SIGUSR1:printf("let's gogogo!\n");break;case SIGUSR2:printf("stop the bus!\n");break;case SIGTSTP:kill(pid,SIGUSR1);break;default:break;}}int main(){signal(SIGINT,SIG_IGN);signal(SIGQUIT,SIG_IGN);signal(SIGTSTP,SIG_IGN);pid = fork();if( pid > 0 ){signal(SIGUSR1,func2);signal(SIGUSR2,func2);signal(SIGTSTP,func2);while(1);exit(0);}else if( pid == 0){signal(SIGINT,func1);signal(SIGQUIT,func1);signal(SIGUSR1,func1);while(1);exit(0);}}