c 编写两个程序,一个代表司机,一个代表售票员。 他们之间的交互如下: 售票员向司机发某信号,司机输出“开车”。 售票员向司机发某信号,司机输出“靠站”。 司机向售票员发某信号,售票员输出“到总站,全部下车”之后退出,同时司机也退出
时间: 2024-04-12 11:31:26 浏览: 53
以下是使用 C 语言编写的两个程序,一个代表司机,一个代表售票员。它们之间通过信号进行交互。
司机程序:
```c
#include <stdio.h>
#include <signal.h>
void handleSignal(int signal) {
if (signal == SIGUSR1) {
printf("开车\n");
} else if (signal == SIGUSR2) {
printf("靠站\n");
}
}
int main() {
signal(SIGUSR1, handleSignal);
signal(SIGUSR2, handleSignal);
while (1) {
// 等待信号
}
return 0;
}
```
售票员程序:
```c
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int main() {
pid_t driverPID = fork();
if (driverPID == 0) {
execl("./driver", "driver", NULL);
} else {
sleep(1); // 等待司机程序启动
kill(driverPID, SIGUSR1); // 发送信号给司机,表示开车
sleep(1); // 等待司机输出
kill(driverPID, SIGUSR2); // 发送信号给司机,表示靠站
sleep(1); // 等待司机输出
printf("到总站,全部下车\n");
kill(driverPID, SIGKILL); // 给司机发送终止信号
}
return 0;
}
```
这两个程序通过使用 `SIGUSR1` 和 `SIGUSR2` 信号进行交互。售票员程序先启动司机程序,然后发送信号给司机,司机根据收到的信号输出相应的信息。最后,售票员程序输出最终信息后退出,同时给司机发送终止信号,使司机程序也退出。