下面有一个代码段。我想看看fd1和fd0的谷是什么,在我创建的所有过程中,它们最终都是3和4?为什么会这样。
if (pipe(fd) < 0)
printf("Pipe Error");
if ((pid = fork()) < 0 )
{
printf("Fork Error");
}
else if (pid > 0) //daddy
{
close (fd[0]);
write(fd[1],"Hi, Im Parent \n", 15);
printf("Value of fd1 is %d and fd0 is %d in parent. \n", fd[1], fd[0]);
printf("Parent Process is %d \n", pid);
printf("My true id is: %d and my parent id is %d \n", getpid(), getppid());
wait();
}发布于 2015-01-02 07:35:29
文件描述符(虽然以不同的方式从open或pipe等函数返回)是表示打开文件的小整数。
它们与标准C中指向FILE类型的指针文件句柄的概念不同(我使用术语“句柄”,尽管标准本身只是声明它将指针与流关联并返回该指针)。
因此,您会期望看到的行为,pipe()抓住前两个描述符目前没有使用。
文件描述符0、1和2分别指标准输入、标准输出和标准错误,类似于FILE *值stdin、stdout和stderr。
https://stackoverflow.com/questions/26226046
复制相似问题