了解UNIX中的管道

时间:2014-09-27 13:31:52

标签: unix pipe

我最近开始阅读有关管道的内容。我不明白它在这段代码中如何将文件描述符号打印为4和3?

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
int main(){
int pfds[2];
char buf[30];
if (pipe(pfds) == -1) {
perror("pipe");
exit(1);
}
printf("writing to file descriptor #%d\n", pfds[1]);
write(pfds[1], "test", 5);
printf("reading from file descriptor #%d\n", pfds[0]);
read(pfds[0], buf, 5);
printf("read \"%s\"\n", buf);
return 0;
}
  

输出:
  写入文件描述符#4

     

从文件描述符#3中读取

     

阅读&#34;测试&#34;

这里为什么/如何打印4和3?

1 个答案:

答案 0 :(得分:2)

文件描述符被分配为可用的最小值。应用程序启动时已经采用了0,1和2(它们继承了stdin,stdout和stderr),因此接下来的两个描述符将是3和4。