2016-10-30 2 views
3

Wenn ich ein Programm von Desktop (Ubuntu 16.04) anstelle von Shell starten, so dass das Programm nicht mit einem Terminal verbunden ist, was sind die Standardeingabe und die Standardausgabe für dieses Programm? Sind STDIN_FILENO und STDOUT_FILENO gültige Dateideskriptoren beim Programmstart? Wo schreibt printf in diesem Fall?Was sind die Standard-Stdin und -Stdout für ein Programm gestartet von Desktop auf Linux?

+0

Warum nicht versuchen? In Windows wird ein Konsolenfenster geöffnet, wenn 'stdout' verwendet wird, das beim Beenden geschlossen wird. Wenn am Ende des Programms keine Aufforderung oder Pause angezeigt wird, kann dies so schnell geschehen, dass Sie das Fenster nicht sehen, bevor der Bildschirm aktualisiert wird. –

+0

@WeatherVane Ich habe versucht, ein Hello World-Programm in C mit Gcc auf Ubuntu zu kompilieren. Dann habe ich auf dem Desktop auf die ausführbare Datei doppelgeklickt, und nichts passierte (kein Terminal erscheint). Ich kann immer noch nicht herausfinden, wie Standard und Standard für dieses Programm eingestellt sind, als ich es auf diese Weise gestartet habe. –

+0

Hast du am Ende des Programms eine Pause gemacht, wie ich es vorgeschlagen habe? –

Antwort

0

Sie können das Programm strace verwenden, um alle Systemaufrufe zu sehen, die ein Programm ausführt (wie Öffnen, Lesen, Schreiben, Schließen). Wenn Sie es mit dem „Desktop-Programm“ attatch (die Ihr Programm ausgeführt wird, verwenden pstree oder proctree), können Sie sehen, was 0 Deskriptoren Datei geschieht, 1 und 2.

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

die Google für "gnome run program stdout"

Verwandte Themen