Я работаю с многопоточной программой.
Сначала я перенаправляю свой stdout в определенный файл. Там нет проблем (я использовал dup2(fd, 1)
, где fd
- файловый дескриптор для файла).
Впоследствии мне нужно снова перенаправить мой stdout на терминал.
Мой первый подход:
/*Declaration*/
fpost_t stream_sdout;
/*code*/
if ( fgetpos( stdout, &stream_sdout) == -1 )
perror(Error:);
В нем говорится о незаконном поиске.
Не знаю, почему это происходит.
Но если я получу это для работы, тогда мне нужно использовать fsetpos(stdout, &stream_stdout)
, и он должен работать.
Моя вторая идея заключалась в том, чтобы скопировать stdout с помощью dup2(stdout, 4)
в таблицу дескриптора файла в позиции 4. Но это тоже не работает.
Как я могу переключить стандартный вывод обратно на исходный пункт назначения (терминал, канал, файл, что угодно)?