linux c pipe程序
时间: 2023-09-03 14:12:12 浏览: 70
以下是一个简单的 Linux C Pipe 程序,它创建了两个子进程,并使用管道进行通信:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
int fd[2];
pid_t pid1, pid2;
if (pipe(fd) == -1) {
fprintf(stderr, "Pipe failed");
return 1;
}
pid1 = fork();
if (pid1 < 0) {
fprintf(stderr, "Fork failed");
return 1;
}
if (pid1 == 0) {
// Child process 1
char message[] = "Hello from child process 1!\n";
close(fd[0]);
write(fd[1], message, strlen(message));
exit(0);
} else {
pid2 = fork();
if (pid2 < 0) {
fprintf(stderr, "Fork failed");
return 1;
}
if (pid2 == 0) {
// Child process 2
char message[] = "Hello from child process 2!\n";
close(fd[0]);
write(fd[1], message, strlen(message));
exit(0);
} else {
// Parent process
close(fd[1]);
char buffer[100];
read(fd[0], buffer, 100);
printf("%s", buffer);
read(fd[0], buffer, 100);
printf("%s", buffer);
}
}
return 0;
}
```
这个程序首先创建了一个管道。然后它创建了两个子进程,每个子进程都写入一条消息到管道中。最后,父进程从管道中读取这两条消息并将它们打印到屏幕上。
输出应该类似于下面的内容:
```
Hello from child process 1!
Hello from child process 2!
```