linux管道通信代码
时间: 2023-04-26 17:02:53 浏览: 130
下面是一个简单的 Linux 管道通信代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFFER_SIZE 25
#define READ_END 0
#define WRITE_END 1
int main(void)
{
char write_msg[BUFFER_SIZE] = "Hello, pipe!";
char read_msg[BUFFER_SIZE];
int fd[2];
pid_t pid;
// 创建管道
if (pipe(fd) == -1) {
fprintf(stderr, "Pipe failed");
return 1;
}
// 创建子进程
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed");
return 1;
}
if (pid > 0) { // 父进程
// 关闭读端
close(fd[READ_END]);
// 写入数据
write(fd[WRITE_END], write_msg, strlen(write_msg)+1);
// 关闭写端
close(fd[WRITE_END]);
} else { // 子进程
// 关闭写端
close(fd[WRITE_END]);
// 读取数据
read(fd[READ_END], read_msg, BUFFER_SIZE);
printf("Received message: %s\n", read_msg);
// 关闭读端
close(fd[READ_END]);
}
return 0;
}
```
这个程序创建了一个管道,然后创建了一个子进程。父进程向管道中写入数据,子进程从管道中读取数据并打印出来。注意,父进程和子进程都需要关闭管道的读端或写端,否则会导致死锁。
阅读全文