C 作为进程子进程,如何知道哪个文件描述符是父进程

C 作为进程子进程,如何知道哪个文件描述符是父进程,c,linux,pipe,fork,file-descriptor,C,Linux,Pipe,Fork,File Descriptor,我正在尝试编写一个程序,它分叉并等待他的孩子完成,然后孩子对输入做一些工作,然后像它的父母那样分叉,以此类推 现在,我知道将副本分给子文件是文件描述符的数组,我应该关闭与父文件相关联的文件描述符,但我不知道哪些是父文件描述符。我需要给我的孩子父母吗 一个多小时以来,我一直在想这个问题,我想我有点思维障碍,因为我无法得出结论 TL;DR:作为子进程,我如何知道哪些文件描述符属于我的父进程?就在fork之后(在任何exec函数之前),子进程的状态与其父进程相同(除了fork的结果,它仅在子进程中为0

我正在尝试编写一个程序,它分叉并等待他的孩子完成,然后孩子对输入做一些工作,然后像它的父母那样分叉,以此类推

现在,我知道将副本分给子文件是文件描述符的数组,我应该关闭与父文件相关联的文件描述符,但我不知道哪些是父文件描述符。我需要给我的孩子父母吗

一个多小时以来,我一直在想这个问题,我想我有点思维障碍,因为我无法得出结论


TL;DR:作为子进程,我如何知道哪些文件描述符属于我的父进程?

就在
fork
之后(在任何
exec
函数之前),子进程的状态与其父进程相同(除了
fork
的结果,它仅在子进程中为0)。因此,您知道什么是文件描述符,因为您已经编写了在parent&child中运行的程序。在Linux上,您还可以阅读
/proc/self/fd/
目录,请参阅

您可以在
fork
之后和
exec
之前关闭大多数文件描述符;您可以编写如下代码

for (int fd=3; fd<64; fd++) (void) close(fd);
for(int fd=3;fd)“关闭与父对象关联的对象,但我无法确定哪些是父对象。”为什么?您正在编写代码。是否尝试了
getppid()
函数?