进程间用信号通信(司机和售票员问题)

此博客介绍了如何通过信号在进程间实现通信,模拟司机和售票员的操作。售票员进程响应SIGINT和SIGQUIT信号,分别向司机发送SIGUSR1和SIGUSR2信号,而司机进程在接收到SIGTSTP信号时,向售票员发送SIGUSR1。通过信号处理函数,售票员在接收到SIGUSR1时会提示乘客下车并结束程序,司机在接收到SIGUSR1和SIGUSR2时会输出相应的指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**************************************************************************************************
司机售票员问题
创建子进程代表售票员,父进程代表司机,同步过程如下:
1、售票员捕捉SIGINT(代表开车),发 SIGUSR1 给司机,司机打印"let's go"
2、售票员捕捉SIGQUIT(代表停车),发 SIGUSR2 给司机,司机打印"stop the bus"
3、司机捕捉SIGTSTP(代表车道总站),发 SIGUSR1 给售票员,售票员打印"please get off the bus",结束总程序
**************************************************************************************************/
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>

void saler(int);     //售票员信号处理函数
void driver(int);    //司机信号处理函数

pid_t pid;  //保存子进程号

int main()
{
    if ((pid = fork()) == -1)
    {
        perror("fork");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值