2011-10-26 6 views
0

Extened questions from In multi thread application how can i redirect stderr & stdout in separate file as per thread?freopen()을 사용하여 다중 스레드 응용 프로그램의 스레드 바이스 로그 파일에서 stdout 및 stdin을 리디렉션 할 수 있습니까?

다른 로그 파일의 각 스레드에서 생성 된 모든 printf 및 오류/경고 메시지를 어떻게 유지하고 싶은지보십시오.

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

freopen 함수는 3 번째 인수 스트림을 1 번째 인수 파일 이름으로 리디렉션합니다. 그래서 지금 내가 멀티 - 거기 응용 프로그램에서 물어보고 싶은 freopen()의 도움으로 할 수 ... 어떻게?

답변

1

파일을 포함하여 모든 리소스가 스레드 응용 프로그램에서 공유되므로 한 스레드에서 stdin 또는 stdout을 변경하면 모든 스레드에 대해 변경됩니다. 단일 스레드에서만 변경하려면 fork을 사용하여 대신 새 프로세스를 작성하십시오.