管道(pipe)是Linux系统中的一个重要概念,它允许一个进程的输出作为另一个进程的输入,从而实现进程间的数据传递和通信。以下是关于管道的一些基础概念和相关信息:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int pipefd[2];
pid_t cpid;
char buf;
if (pipe(pipefd) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
}
cpid = fork();
if (cpid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (cpid == 0) { // 子进程
close(pipefd[1]); // 关闭写端
while (read(pipefd[0], &buf, 1) > 0) {
putchar(buf);
}
close(pipefd[0]);
exit(EXIT_SUCCESS);
} else { // 父进程
close(pipefd[0]); // 关闭读端
write(pipefd[1], "Hello, World!\n", 14);
close(pipefd[1]);
wait(NULL); // 等待子进程结束
exit(EXIT_SUCCESS);
}
}
这个示例展示了如何使用匿名管道在父子进程之间传递数据。父进程写入"Hello, World!"到管道,子进程从管道读取并打印出来。
总之,管道是Linux系统中一种强大的进程间通信机制,广泛应用于各种场景。
领取专属 10元无门槛券
手把手带您无忧上云