Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ElTioBatiste

#1
Buenos dias! Estoy actualmente programando en C/C++ y resulta que tengo que llamar a un programa para generar unos ficheros. Para hacer esto, utilizo la funcion system lo cual viene de perlas porque así el codigo no continua hasta que el programa "llamado" ha acabado. Ahora bien, el programa al que llamo, tarda bastante en ejecutarse (+de 15 min). Por lo tanto es necesario dar unas especie de "feedback" al usuario. El programa que se ejecuta normalmente, da outputs a la consolo la funcion "system" no crea una consola estos se pierden. Hasta ahora las diferentes alternativas que veo serian:
    - 1a Opcion: Volcar los outputs en un .txt (mediante el >) y en el "system" poner un & para que la aplicacion pueda continuar (sé que esto funciona en linux pero alguien me podria confirmar si funciona en windows tambien?). Contando que el anderson funcione con windows, el problema seria como hacer el "while" que va haciendo el output para que no pare hasta que se acabe el proceso, sin contar que no me parece muy sano abrir y leer un archivo que esta en proceso de ser modificado.
    - 2a Opcion: Conseguir, de alguna forma, que los outputs vayan a un buffer/char y poderlos sacar a pantalla con el fprint. Aunque desconozco si esto es posible y como se haria el loop que detecta si el programa ha hecho un nuevo output y lo saca por pantalla hasta que el programa deje de ejecutarse.
     - 3a Opcion: La cual me parece la mas sana y la menos alocada, conseguir crear una terminal para este programa (si puede ser aunque el programa se ejecute en windows o en linux) y que así mostrase los outputs del proceso y se cerrase al acabar el programa.
Muchas gracias por haber dedicado su tiempo a leer el post y agradeceria sinceramente toda la ayuda que me pudiesen dar!
Pasen un dia magnífico!