什么设置了子进程的 STDERR、STDOUT 和 STDIN?

什么设置了子进程的 STDERR、STDOUT 和 STDIN?

如果程序运行fork()什么设置标准流STDOUTSTDIN并且STDERR

答案1

Stdin、stdout 和 stderr 是从父进程继承的。如果需要的话,由子进程将它们更改为指向新文件。

fork(2)手册页:

   *  The  child inherits copies of the parent's set of open file descrip‐
      tors.  Each file descriptor in the child refers  to  the  same  open
      file  description (see open(2)) as the corresponding file descriptor
      in the parent.

答案2

正如凯尔琼斯所说,它们是从父进程传播的。如果你问如何要将它们设置为孩子,您正在寻找freopen()

相关内容