在C

问题描述:

底层API重定向标准输出是否有重定向与底层API标准输出的方式......有没有发现一个函数或方法来真正做到这一点....在C

dup系统调用应该让你重定向标准输出,如this example所示。

freopen也可以,如果你重定向到一个文件,但dup也可以使用 与管道和插座。

+0

是的!疯狂的触摸输入技巧FTW! – 2010-07-17 00:18:14

您可以使用freopen()将其重定向到一个文件。

+0

不是不低的水平其实dup复制的工作原理感谢 – Necronet 2010-07-17 00:30:13

您可以使用freopen()将stdout重定向到文件。如果您使用的是类似POSIX的系统,则可以使用close(),dup()open(),但它们可以使用文件描述符而不使用FILE。

我相信dup2(fd,1)会这样做,使用open()打开fd后。

+1

如果你有一个变量'FILE * f',你可以用'fileno(f)'得到fd。像这样:'dup2(fileno(f),1)'。 – bstpierre 2010-07-17 00:30:45

+0

谢谢,从来不知道如何混淆'FILE *'和常规'fd'。我认为将它们混合在I/O中是灾难的秘诀? (即'FILE *'函数不知道你对'fd'的低级访问) – mvds 2010-07-17 08:17:59