En Linux, un programa emite los resultados de printf y rutinas similares al descriptor de archivo de salida estándar , que cuando el programa se ejecuta en una ventana de terminal es el terminal mismo (en realidad, el dispositivo pseudo-terminal utilizado, configurado y administrado por El programa terminal). Eso es lo que ves en la última imagen.
Pero cuando el programa se ejecuta bajo el control de un GUI / Desktop Manager (como se hace en la segunda imagen), la salida no aparece en la pantalla / escritorio sino en la salida estándar (como siempre), que esta vez es el archivo de registro asociado con el servidor X-11 (generalmente “.xsession-errors” en el directorio de inicio). Busque su salida en algún lugar cerca del final de ese archivo, o ejecute un “tail -f ~ / .xsession-errors” en una ventana de terminal para ver lo que se está escribiendo en ese archivo de registro en tiempo real, esté listo para mucho mensajes de vez en cuando.
Cuando “activa esa casilla de verificación” esencialmente le está diciendo al administrador de archivos subyacente que su ejecutable está destinado a ejecutarse desde un terminal, y creará y abrirá una ventana de terminal para ejecutar su programa. Pero, y esto es un gran “Pero”: la ventana de terminal se cerrará inmediatamente después de que el programa salga, lo que en su caso es casi inmediato. Con una computadora rápida y una tarjeta gráfica rápida, puede aparecer como un parpadeo rápido. (En mi propio escritorio bastante antiguo es notable, pero casi imposible de leer).
- ¿Qué herramientas utilizan las empresas de traducción para la localización de software?
- Cómo actualizar aplicaciones de iOS 7 a iOS 8
- ¿Cuál es la mejor aplicación para permitir múltiples copias al portapapeles al mismo tiempo?
- ¿Qué carrera profesional es aconsejable para alguien con habilidades en el uso de tecnologías o softwares existentes?
- ¿Cómo entrar en una empresa después de aprender el software CAD 3D?
En algunos administradores de escritorio, es posible no solo hacer clic en la casilla de verificación “Ejecutar en terminal”, sino que hay otra (a veces en “Opciones avanzadas”) que dice “No cerrar cuando el comando sale”, que es exactamente lo que desea en Para ver la salida de su código. Cuando haya terminado de leer su ventana de terminal, o incluso copiar y pegar la salida en otro lugar, simplemente cierre esa ventana y todo desaparecerá.
¿Por qué su código parece funcionar cuando está depurando? Supongo que el sistema de depuración toma el control y le solicita los comandos que debe hacer antes de cerrar su programa. Tenga en cuenta que en este caso es el programa de depuración el que está “manteniendo abierta” la ventana del terminal, y al finalizar el depurador cerrará (por supuesto) la ventana del terminal.
Si por alguna razón no puede habilitar la opción “No cerrar cuando el comando sale”, siempre puede agregar un comando de pausa al final de su código. Por ejemplo, agregue ” sleep(3600);
“Justo antes de” return 0;
“Y su programa se detendrá durante una hora antes de cerrar la ventana del terminal. (Supongo que una hora es suficiente para sus propósitos.) Siempre puede “ ^C
” salir en cualquier momento antes de que finalice la llamada sleep()
.