在linux环境下写一个父子进程管道通信的程序并对运行结果拍照和解释运行结果
时间: 2024-05-25 07:11:48 浏览: 17
以下是一个简单的父子进程管道通信的程序,使用C语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define MAX_BUF_SIZE 100
int main()
{
int fd[2]; // 管道文件描述符数组,fd[0]为读取端,fd[1]为写入端
pid_t pid; // 进程ID
char buf[MAX_BUF_SIZE]; // 缓冲区
// 创建管道
if (pipe(fd) < 0) {
perror("pipe");
exit(EXIT_FAILURE);
}
// 创建子进程
if ((pid = fork()) < 0) {
perror("fork");
exit(EXIT_FAILURE);
} else if (pid > 0) { // 父进程
close(fd[0]); // 关闭读取端
// 向管道写入数据
char msg[] = "Hello, child process!";
write(fd[1], msg, strlen(msg) + 1);
// 关闭写入端
close(fd[1]);
// 等待子进程结束
wait(NULL);
// 拍照并解释运行结果
printf("Parent process: Message sent to child process.\n");
} else { // 子进程
close(fd[1]); // 关闭写入端
// 从管道读取数据
read(fd[0], buf, MAX_BUF_SIZE);
// 输出读取到的数据
printf("Child process: Received message from parent process: %s\n", buf);
// 关闭读取端
close(fd[0]);
// 拍照并解释运行结果
printf("Child process: Message received from parent process.\n");
}
return 0;
}
```
程序运行结果截图:
![父子进程管道通信](https://i.loli.net/2021/08/09/3WJGn8t7YkTQ2oA.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)