He codificado un programa en C que envía mensajes a la salida estándar utilizando printf y tengo problemas para redirigir la salida a un archivo (desde bash).Problema al redireccionar una salida del programa C en bash
que he probado:
./program argument >> program.out
./program argument > program.out
./program >> program.out argument
./program > program.out argument
En cada caso, se crea el archivo de program.out pero permanece vacío. Después de que termine la ejecución del tamaño del archivo es 0.
Si Omito la redirección al ejecutar el programa:
./program argument
A continuación, todos los mensajes enviados a la salida estándar utilizando printf se muestran en la terminal.
Tengo otros programas C para los cuales no tengo problemas para redirigir la salida de esta manera. ¿Tiene que ver con el programa en sí? con el argumento pasando? ¿Dónde debería buscarse el problema?
Algunos detalles sobre el programa C:
- No lee cualquier cosa, desde la entrada estándar
- Se utiliza sockets BSD de Dominio de Internet
- Se utiliza hilos POSIX
- Se asigna una función especial controlador para Señal SIGINT con sigaction
- Envía muchas líneas nuevas a stdout (para aquellos de ustedes que piensen que debo enjuagar)
Algunos código:
int main(int argc, char** argv)
{
printf("Execution started\n");
do
{
/* lots of printf here */
} while (1);
/* Code never reached */
pthread_exit(EXIT_SUCCESS);
}
¿Lo mismo programa sin redirección de la salida produce ninguna salida a la pantalla? – womble
He editado la pregunta para aclarar eso. Gracias – mmutilva