c语言父进程与子进程通信的代码
时间: 2023-08-12 08:11:42 浏览: 57
以下是使用C语言进行父进程与子进程通信的示例代码:
```
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
int fd[2];
pid_t pid;
char buffer[20];
// 创建管道
if (pipe(fd) == -1) {
printf("Failed to create pipe.\n");
return 1;
}
// 创建子进程
pid = fork();
if (pid < 0) {
printf("Failed to create child process.\n");
return 1;
} else if (pid == 0) {
// 子进程
close(fd[1]); // 关闭写入端
read(fd[0], buffer, sizeof(buffer));
printf("Received message: %s\n", buffer);
close(fd[0]);
} else {
// 父进程
close(fd[0]); // 关闭读取端
write(fd[1], "Hello, world!", 13); // 写入消息
close(fd[1]);
}
return 0;
}
```
在上述示例中,我们使用`pipe`函数创建了一个管道,并使用`fork`函数创建了一个子进程。在父进程中,我们关闭了管道的读取端,并使用`write`函数向管道的写入端写入了一条消息。在子进程中,我们关闭了管道的写入端,并使用`read`函数从管道的读取端读取了父进程发送的消息。注意,在使用管道进行进程间通信时,需要确保在父进程和子进程中正确地关闭管道的读取端和写入端,以避免出现死锁或其他问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)