C语言中带有低级api的重定向标准输出

C语言中带有低级api的重定向标准输出,c,operating-system,C,Operating System,有没有办法用低级API重定向stdout。。。尚未找到实际执行此操作的函数或方法……系统调用应该允许您重定向stdout,如中所示 freopen在重定向到文件时也可以工作,但也可以使用dup 使用管道和套接字。您可以使用freopen()将其重定向到文件。您可以使用freopen()将标准输出重定向到文件。如果您使用的是类似posix的系统,您可以使用close()、dup()和open(),尽管它们与文件描述符而不是文件一起工作。我相信dup2(fd,1)会起作用,例如,在使用open()打

有没有办法用低级API重定向stdout。。。尚未找到实际执行此操作的函数或方法……

系统调用应该允许您重定向stdout,如中所示

freopen
在重定向到文件时也可以工作,但也可以使用
dup

使用管道和套接字。

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

您可以使用
freopen()
将标准输出重定向到文件。如果您使用的是类似posix的系统,您可以使用
close()
dup()
open()
,尽管它们与文件描述符而不是文件一起工作。

我相信dup2(fd,1)会起作用,例如,在使用open()打开fd之后。

是的!疯狂触摸打字技能FTW!如果您有一个变量
文件*f
,则可以使用
fileno(f)
获取fd。类似这样的内容:
dup2(fileno(f),1)
。谢谢,我从来不知道如何将
文件*
和常规
fd
s混淆起来。我想在I/O中混用它们会导致灾难?(即,
文件*
函数不知道您对
fd的较低级别访问权限)