关闭所有描述符后如何重新打开stdout文件?

时间:2016-01-18 11:16:01

标签: c

我在daemonize程序中遇到问题。问题是关闭所有打开的描述符后,我需要重新打开stdout文件来打印消息。

我有一种方法。但这不起作用。

方法是使用dup复制stdout描述符并重新打开它。但是deamonize函数被称为关闭所有文件描述符。因此,该重复文件描述符也已关闭。

任何人都可以帮助我这样做。

1 个答案:

答案 0 :(得分:1)

如果使用daemon()守护进程,则可以指定noclose以防止这些文件描述符被关闭:

daemon(0, 1);

但你应该在手工检查后关闭这些,否则你的终端可能会搞砸了。