Я работаю с многопоточной программой.
Сначала я перенаправляю стандартный вывод на определенный файл. Никаких проблем (я использовал 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. Но это тоже не работает.
Как я могу переключить стандартный вывод обратно в исходное место назначения (терминал, канал, файл и т. д.)?