Existe-t-il une possibilité de réaliser différentes redirections pour la sortie standard comme printf (3) pour différents threads POSIX? Qu'en est-il de l'entrée standard?Différents flux standard par thread POSIX
J'ai beaucoup de code basé sur l'entrée/sortie standard et je peux seulement séparer ce code en thread différent de POSIX, pas de processus. Système d'exploitation Linux, bibliothèque standard C. Je sais que je peux refactoriser le code pour remplacer printf() par fprintf() et plus loin dans ce style. Mais dans ce cas, je dois fournir un type de contexte que l'ancien code n'a pas.
Donc personne n'a une meilleure idée (regardez dans le code ci-dessous)?
#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;
}
Vraiment beau point technique capable de résoudre la tâche originale mais après avoir analysé la situation plus profond je préférais retravailler le code car je prévois de le réutiliser dans le futur et je préfère ne rien présenter ressemblant à fork()). –