首页 >> 大全

3.8 进程篇-通信:司机与售票员问题

2023-12-12 大全 31 作者:考证青年

信号模拟司机售票员问题:创建子进程代表售票员,父进程代表司机 ,同步过程如下:

1 售票员捕捉(代表开车),发给司机,司机捕捉到该信号之后打印(“move to next ”)。

2 售票员捕捉(代表靠站),发给司机,司机捕捉到该信号之后打印(“stop the bus”)。

_司机售票员pv操作伪代码_售票员与乘客操作系统

3 司机捕捉(代表车到总站),发给售票员,售票员捕捉到该信号之后打印(“all get off the bus”)。

代码如下:

司机售票员pv操作伪代码_售票员与乘客操作系统_

#include
#include
#include
#include
#includestatic pid_t pid;void client(int sig)
{switch(sig){case SIGINT:kill(getppid(),SIGUSR1);	break;case SIGQUIT:kill(getppid(),SIGUSR2);break;case SIGUSR1:printf("get off bus\n");kill(0,SIGKILL);break;default:break;}}void server(int sig)
{switch(sig){case SIGUSR1:printf("gogogogo\n");break;case SIGUSR2:printf("stop bus\n");break;case SIGTSTP:kill(pid,SIGUSR1);break;default:break;}}int main(void)
{if((pid = fork()) < 0){perror("fork");exit(1);}else if(pid == 0){signal(SIGINT,client);	//ctrl+csignal(SIGQUIT,client);	//ctrl+\signal(SIGUSR1,client);signal(SIGTSTP,SIG_IGN);while(1){pause();}}else{signal(SIGINT,SIG_IGN);signal(SIGQUIT,SIG_IGN);signal(SIGUSR1,server);signal(SIGUSR2,server);signal(SIGTSTP,server);	//ctrl+zwhile(1){pause();}}return 0;
}

结果如下:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了