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

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

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

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

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

1 Ответ

1 голос
/ 26 октября 2011

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

...