gpt4 book ai didi

C 将标准输出恢复到终端

转载 作者:太空狗 更新时间:2023-10-29 16:27:35 27 4
gpt4 key购买 nike

我正在使用一个多线程程序。

首先,我将标准输出重定向到某个文件。没问题(我使用了 dup2(fd, 1),其中 fd 是文件的文件描述符)。

之后,我需要再次将我的标准输出重定向到终端。

我的第一种方法:

      /*Declaration*/
fpost_t stream_sdout;
/*code*/
if ( fgetpos( stdout, &stream_sdout) == -1 )
perror(Error:);

它说非法搜索。
不知道为什么会这样。
但是如果我让它工作,那么我只需要使用 fsetpos(stdout, &stream_stdout) 它应该可以工作。

我的第二个想法是使用 dup2(stdout, 4) 将标准输出复制到文件描述符表的位置 4。但这也不起作用。

如何将标准输出切换回其原始目的地(终端、管道、文件等)?

最佳答案

#include <unistd.h>

...

int saved_stdout;

...

/* Save current stdout for use later */
saved_stdout = dup(1);
dup2(my_temporary_stdout_fd, 1);

... do some work on your new stdout ...

/* Restore stdout */
dup2(saved_stdout, 1);
close(saved_stdout);

关于C 将标准输出恢复到终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com