建立有名管道文件,并使用;练习使用无名管道|。
时间: 2024-05-08 08:16:41 浏览: 12
1. 建立有名管道文件并使用:
有名管道(FIFO)是一种特殊类型的文件,用于进程间通信。可以通过mkfifo命令创建一个有名管道文件。
步骤如下:
1. 使用mkfifo命令创建有名管道文件:`$ mkfifo myfifo`
2. 在一个终端窗口中,使用cat命令将标准输入的内容写入到有名管道文件中:`$ cat > myfifo`
3. 在另一个终端窗口中,使用cat命令读取有名管道文件中的内容:`$ cat < myfifo`
4. 在第一个终端窗口中输入一些内容,可以看到在第二个终端窗口中会输出相应的内容。
2. 练习使用无名管道:
无名管道是一种匿名的管道,只能用于父子进程之间的通信。可以使用pipe系统调用创建一个无名管道。
步骤如下:
1. 创建一个父子进程,使用pipe系统调用创建一个无名管道:`int fd[2]; pipe(fd);`
2. 在父进程中,关闭管道的读端,写入一些数据到管道中:`close(fd[0]); write(fd[1], "hello", 5);`
3. 在子进程中,关闭管道的写端,读取管道中的数据并输出:`close(fd[1]); char buf[10]; read(fd[0], buf, 5); printf("%s\n", buf);`
4. 编译运行程序,可以看到子进程输出了父进程写入的数据。
完整代码如下:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
int fd[2];
pipe(fd);
pid_t pid = fork();
if (pid == 0) {
close(fd[1]); // 关闭写端
char buf[10];
read(fd[0], buf, 5);
printf("%s\n", buf); // 输出 hello
} else {
close(fd[0]); // 关闭读端
write(fd[1], "hello", 5);
}
return 0;
}
```