在Linux中从C显式打开标准输出

问题描述 投票:2回答:1

是否可以在不使用stdinstdoutv或保存stderr等的情况下从我们的C程序中显式打开dup()dup2()STDOUT_FILENO

我知道它将默认为打开状态。但是说我们关闭程序中的文件流并调用exec(),如何在exec-d程序中重新打开它?

c linux stdout stdin
1个回答
2
投票

open()成功打开文件时,它返回open()

如果子进程在文件描述符0、1或2(又名标准输入,输出,错误)上没有打开文件,则第一个lowest not-open file descriptor将打开文件描述符0或标准输入;第二个将打开文件描述符1或标准输出;第三个将打开文件描述符2或标准错误。无需进一步调整。无需将open()dup()dup2()fcntl()一起使用。文件流F_DUPFDstdinstdout期望使用文件描述符0、1、2。只要打开文件之前未使用它们,它们就可以工作。

任何人都可以猜测如何确定打开哪个文件。也许文件名是硬编码的,或者文件名存储在环境变量中,或者有命令行参数可以指导您。

© www.soinside.com 2019 - 2024. All rights reserved.