Как я могу использовать freopen() для перенаправления stdout и stdin в файл журнала потоков в многопоточном приложении?

Расширенный вопрос из В многопоточном приложение, как я могу перенаправить stderr и stdout в отдельный файл в соответствии с потоком?

посмотрите, как я хочу сохранить все сообщения printf и сообщения об ошибках/предупреждениях, создаваемые в каждом потоке, в другом файле журнала.

FILE * freopen ( const char * filename, const char * mode, FILE * stream ); 

Функция freopen перенаправляет поток 3-го аргумента в имя файла 1-го аргумента. Итак, теперь я хочу спросить вас в многопоточном приложении, могу ли я сделать это с помощью freopen()... как?


person Jeegar Patel    schedule 26.10.2011    source источник


Ответы (1)


Поскольку в многопоточном приложении используются общие ресурсы, включая файлы, изменение stdin или stdout в одном потоке меняет их для всех потоков. Если вы хотите изменить его только в одном потоке, используйте вместо этого fork для создания нового процесса.

person Some programmer dude    schedule 26.10.2011