다른 POSIX 스레드에 대해 printf (3)와 같은 표준 출력에 대해 다른 리다이렉션을 수행 할 가능성이 있습니까? 표준 입력은 어떻게됩니까?POSIX 스레드마다 다른 표준 스트림
표준 입출력을 기반으로하는 많은 코드가 있으며이 코드를 프로세스가 아닌 다른 POSIX 스레드로 분리 할 수 있습니다. 리눅스 운영 체제, C 표준 라이브러리. printf()를 fprintf()와이 스타일로 바꾸는 코드를 리펙토링 할 수 있음을 알고 있습니다. 그러나이 경우 이전 코드에없는 일종의 컨텍스트를 제공해야합니다.
아무도 더 좋은 아이디어가 없다 (아래 코드를보십시오)?
#include <pthread.h>
#include <stdio.h>
void* different_thread(void*)
{
// Something to redirect standard output which doesn't affect main thread.
// ...
// printf() shall go to different stream.
printf("subthread test\n");
return NULL;
}
int main()
{
pthread_t id;
pthread_create(&id, NULL, different_thread, NULL);
// In main thread things should be printed normally...
printf("main thread test\n");
pthread_join(id, NULL);
return 0;
}
기술적으로 정말 좋은 점은 기술적으로 원래의 과제를 해결할 수 있었지만 상황을 더 깊이 분석 한 후에 미래에 코드를 재사용 할 계획 이었으므로 코드 재 작업을 선호했고 fork()와 비슷한 것을 소개하지 않기를 바란다.). –