司机和售票员问题 信号signal注册一例
生活随笔
收集整理的這篇文章主要介紹了
司机和售票员问题 信号signal注册一例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
#include <stdio.h> #include <stdlib.h> #include <signal.h>pid_t pid;void driver_handler(int signo) //司機的信號處理函數 {if (signo == SIGUSR1)printf("Let's go!\n");if (signo == SIGUSR2)printf("Stop the bus!\n");if (signo == SIGTSTP)kill(pid, SIGUSR1); }void conductor_handler(int signo) //售票員的信號處理函數 {if (signo == SIGINT)kill(getppid(), SIGUSR1);if (signo == SIGQUIT)kill(getppid(), SIGUSR2);if (signo == SIGUSR1){printf("Please get off the bus!\n");kill(getppid(), SIGKILL);exit(0);} }int main() {if ((pid = fork()) == -1){perror("fork");exit(-1);}if (pid == 0)//conductor{signal(SIGINT,conductor_handler);signal(SIGQUIT,conductor_handler);signal(SIGUSR1,conductor_handler);signal(SIGTSTP, SIG_IGN);}else//driver{signal(SIGUSR1, driver_handler);signal(SIGUSR2, driver_handler);signal(SIGTSTP, driver_handler);signal(SIGINT,SIG_IGN);signal(SIGQUIT,SIG_IGN);}while (1);return 0; }與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的司机和售票员问题 信号signal注册一例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)使用vsphere client
- 下一篇: ArcEngine中画点画线画面