[Programacion C] Problemas con dup2

Hola a todos.

Ante todo decir que iba a preguntar en el hilo oficial de C/C++, pero está archivado...

La cuestión es que estoy intentando redireccionar la salida estandar de un programa a un fichero y me sucede una cosa muy curiosa...

   logfile = open("/tmp/dacme.log", O_CREAT | O_TRUNC | O_WRONLY | O_SYNC, 0644 );

   value = dup(logfile, STDOUT_FILENO); close(logfile);
   
   printf("--- Esto no va ---\n");


    logfile = open("/tmp/dacme.log", O_CREAT | O_TRUNC | O_WRONLY | O_SYNC, 0644 );
 
   printf(" ");
   value = dup(logfile, STDOUT_FILENO); close(logfile);
   
   printf("--- Esto si va ---\n");


Es decir si hago un printf antes de cambiar los descriptores de fichero... entonces todo funciona bien pero si no lo hago en el fichero no me aparece nada...
Sin el printf lo crea bien, los descriptores de fichero tienen el valor que toca después del dup2.. pero sigue sin funcionar.

¿Alguien sabe porqué puede ser?

Gracias por la ayuda.

[bye]
0 respuestas