在Linux平台上编写一个C语言应用程序,采用多进程的方法,实现下列两个任务并行: 1)每隔1秒在屏幕上打印出自己的中文姓名; 2)如果在键盘上按1键,打印出自己的学号;如果按2键,打印出自己的班级;如果按q键,则打印停止,程序结束;按其余键无效。
时间: 2023-11-19 17:06:22 浏览: 56
以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void print_name() {
printf("你的中文姓名\n");
}
void print_id() {
printf("你的学号\n");
}
void print_class() {
printf("你的班级\n");
}
void sig_handler(int signo) {
if (signo == SIGINT) {
printf("\n接收到中断信号,退出程序\n");
exit(0);
}
}
int main() {
signal(SIGINT, sig_handler);
printf("按下 1 打印学号,按下 2 打印班级,按下 q 结束程序\n");
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
} else if (pid == 0) { // 子进程打印姓名
while (1) {
print_name();
sleep(1);
}
} else { // 父进程处理键盘输入
while (1) {
char c = getchar();
switch (c) {
case '1':
print_id();
break;
case '2':
print_class();
break;
case 'q':
kill(pid, SIGINT); // 给子进程发送信号
exit(0);
default:
break;
}
}
}
return 0;
}
```
程序首先会创建一个子进程,子进程每隔1秒钟打印一次姓名。父进程则负责读取键盘输入,并根据输入进行相应的操作。如果按下 `q` 键,则父进程会向子进程发送一个中断信号,以结束子进程的执行。当父进程接收到中断信号时,它会先退出自己的循环并结束程序,然后子进程也会随之结束。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)