我正在写一个函数,它给出参数将重定向标准输出到文件或从文件读取标准输入。为此,我关闭与stdout或stdin关联的文件描述符,这样当我打开文件时,它会在我刚刚关闭的描述符下打开。这有效,但问题是,一旦完成,我需要恢复stdout和stdin到他们真正应该做的。关闭它们后重新打开标准输出和标准输入文件描述符
我可以为标准输出做什么打开(“/ dev/tty”,O_WRONLY);但我不确定为什么这会起作用,更重要的是我不知道stdin的等价语句。
所以我有,标准输出
close(1);
if (creat(filePath, O_RDWR) == -1)
{
exit(1);
}
和标准输入
close(0);
if (open(filePath, O_RDONLY) == -1)
{
exit(1);
}
man'dup'和'dup2' – 2012-01-31 17:35:26
'O_RDWR'用于'open'' flags'参数,不适用于'creat'' mode'参数。 – 2016-03-21 12:22:48