2016-10-30 1 views
3

Lorsque je démarre un programme à partir d'un ordinateur de bureau (Ubuntu 16.04) au lieu d'un shell afin que le programme ne soit pas associé à un terminal, quels sont les stdin et stdout pour ce programme? Les STDIN_FILENO et STDOUT_FILENO sont-ils des descripteurs de fichiers valides au démarrage du programme? Où écrit printf dans ce cas?Quels sont les stdin et stdout par défaut pour un programme démarré à partir du bureau sous Linux?

+0

Pourquoi ne pas l'essayer? Dans Windows, il ouvre une fenêtre de console si 'stdout' est utilisé, ce qui se ferme à la sortie. À moins qu'il y ait une invite ou une pause à la fin du programme, cela peut arriver si rapidement que vous ne voyez même pas la fenêtre avant que l'écran soit rafraîchi. –

+0

@WeatherVane J'ai essayé de compiler un programme Hello World en C en utilisant gcc sur Ubuntu. Puis j'ai double-cliqué sur l'exécutable sur le bureau, et rien ne s'est passé (aucun terminal n'apparaît). Je ne peux toujours pas savoir comment stdin et stdout sont définis pour ce programme quand je l'ai démarré de cette façon. –

+0

Avez-vous mis une pause à la fin du programme comme je l'ai suggéré? –

Répondre

0

Vous pouvez utiliser le programme strace pour voir tous les appels système qu'un programme exécute (comme ouvrir, lire, écrire, fermer). Lorsque vous attatch au « programme de bureau » (celui qui exécute votre programme, utilisez pstree ou proctree), vous pouvez voir ce qui se passe aux descripteurs de fichiers 0, 1 et 2.

Voir https://superuser.com/questions/606985/any-way-to-view-stdout-of-a-program-after-it-has-been-started-in-gnome-shell

Ou google pour "gnome run programme stdout"