Есть ли возможность добиться разных перенаправлений для стандартного вывода, таких как printf (3) для разных потоков POSIX? Как насчет стандартного ввода?
У меня много кода, основанного на стандартном вводе / выводе, и я могу только разделить этот код на другой поток POSIX, а не на процесс Операционная система Linux, стандартная библиотека 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;
}