linux进程间通信之信号
来源:互联网 发布:windows商店应用内购 编辑:程序博客网 时间:2024/05/21 17:05
用信号的知识实现司机售票员问题:
1、售票员捕捉SIGINT(代表开车)信号,向司机发送SIGUSR1信号,司机打印("let's gogogog")
2、售票员捕捉SIGQUIT(代表停车)信号,向司机发送SIGUSR2信号,司机打印("stop the bus")
3、司机捕捉SIGTSTP(代表车到终点站)信号,向售票员发送SIGUSR1信号,售票员打印("please get off the bus"),
然后售票员下车。
4、司机等待售票员下车,之后司机再下车
/*************************************************************************> File Name: example.c> Author: XXDK> Email: v.manstein@qq.com > Created Time: Fri 17 Mar 2017 12:20:50 AM PDT ************************************************************************/#include<stdio.h>#include<signal.h>#include<unistd.h>#include<sys/wait.h>#include<stdlib.h>static pid_t slr_pid;void drv_handler(int signo){if(signo == SIGUSR1) printf("driver: let's gogogo\n");else if(signo == SIGUSR2)printf("driver: stop the bus\n");else if(signo == SIGTSTP) kill(slr_pid, SIGUSR1);else if(signo == SIGCHLD){wait(NULL);printf("main exit\n");exit(0);}}void slr_handler(int signo){ if(signo == SIGINT) kill(getppid(), SIGUSR1);else if(signo == SIGQUIT)kill(getppid(), SIGUSR2);else if(signo == SIGUSR1) {printf("seller: please get off the car\n");printf("child process exit\n");exit(0);}}int main(){slr_pid = fork();if(slr_pid < 0) {perror("fork error:");}else if(slr_pid == 0) {signal(SIGINT, slr_handler);signal(SIGQUIT, slr_handler);signal(SIGUSR1, slr_handler);signal(SIGUSR2, SIG_IGN);signal(SIGTSTP, SIG_IGN); }else {signal(SIGINT, SIG_IGN);signal(SIGQUIT, SIG_IGN);signal(SIGUSR1, drv_handler);signal(SIGUSR2, drv_handler);signal(SIGTSTP, drv_handler);signal(SIGCHLD, drv_handler);}while(1)pause();exit(0);}
0 0
- Linux进程间通信之信号
- Linux进程间通信之信号
- linux进程间通信之信号
- linux进程间通信之信号
- Linux 进程间通信之信号
- linux之进程间通信--使用信号
- linux进程间通信之信号
- Linux进程间通信之信号
- linux 进程通信之信号
- linux进程通信之信号
- Linux进程通信之信号
- Linux进程通信之信号
- linux 进程通信之 信号
- Linux进程通信之信号
- linux进程通信之信号
- Linux进程通信之信号
- Linux进程通信之信号
- 6、linux进程间通信之信号通信
- eclipse EE 4.5 配置自定义的maven
- Android 6.0新特性之运行时权限
- 图论之邻接矩阵
- JavaScript-隐式转换
- No.3 分离 OpenCL 内核
- linux进程间通信之信号
- JQuery中ajax的回调函数内给全局变量赋值
- iOS路由设计(三)带你一步步构建iOS路由
- Decision Tree ROC curve
- BZOJ 1588: [HNOI2002]营业额统计
- 打包APK(-- org.apache.http --)编译错误的解决
- mysql数据库忘记密码的解决方法
- Python Machine Learning : Chap2
- 猜生日