我正在使用多线程程序。
首先,我将我的标准输出重定向到某个文件。那里没问题(我使用了文件的文件描述符在dup2(fd, 1)
哪里)。fd
之后,我需要再次将我的标准输出重定向到终端。
我的第一种方法:
/*Declaration*/
fpost_t stream_sdout;
/*code*/
if ( fgetpos( stdout, &stream_sdout) == -1 )
perror(Error:);
它说非法搜索。
不知道为什么会这样。
但是如果我让它工作,那么我只需要使用fsetpos(stdout, &stream_stdout)
它就可以工作。
我的第二个想法是将 stdout 使用复制dup2(stdout, 4)
到位置 4 的文件描述符表中。但这也不起作用。
如何将标准输出切换回其原始目标(终端、管道、文件等)?