【发布时间】:2014-10-08 09:59:07
【问题描述】:
我看过这个Question。
它说我们可以复制标准输入和标准输出的文件描述符,以便我们在程序的稍后阶段重新打开它们。
我的问题:
- 我们能否以 O_WRONLY 模式打开文件“/dev/tty”以重新打开标准输出?
- 这是正确的做法吗?
- 有没有类似的方法可以重新打开stdin和stderr??
【问题讨论】:
-
它说你应该。不是可以。他们提出的解决方案有什么问题?
-
虽然重新打开
/dev/tty会起作用,但它无法处理std*从来不是/dev/tty的情况,而是通过调用shell 重定向到其他进程/文件。 -
我见过使用“/dev/null”通过更改打开模式来重新打开标准输入、标准输出和标准错误。这是article。为什么使用 /dev/null??
-
@KarolyHorvath 解决方案没有问题。我自己直到现在都使用这种方法。但最后的声明很好奇,我想知道它是如何工作的。
-
它打开 null 以获得有效的
std*描述符。与无效的文件描述符相反,读取/写入 null 不会失败(但当然不会失败)。
标签: c linux stdout stdin stderr