编写一个代码要求等子进程输出完字母B之后,父进程才输出字母C
时间: 2024-03-19 09:45:23 浏览: 59
下面是一个简单的代码示例,可以实现您的需求:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int pipefd[2];
pid_t pid;
char buf;
if (pipe(pipefd) == -1) {
perror("pipe");
return 1;
}
pid = fork();
if (pid == -1) {
perror("fork");
return 1;
} else if (pid == 0) {
// 子进程先输出字母 B
printf("子进程输出:B\n");
// 写入管道,通知父进程可以输出 C 了
write(pipefd[1], "B", 1);
return 0;
} else {
// 父进程等待子进程先输出 B
read(pipefd[0], &buf, 1);
if (buf == 'B') {
// 父进程输出 C
printf("父进程输出:C\n");
}
// 等待子进程退出
wait(NULL);
return 0;
}
}
```
这个程序中,父进程先创建了一个管道,然后 fork 出一个子进程。子进程先输出字母 B,然后写入管道。父进程通过管道读取子进程写入的数据,如果是字母 B,则输出字母 C,等待子进程退出后结束。注意,管道中只有一个字节大小的缓冲区,如果要传输更多的数据,需要修改程序。
阅读全文