Frage

Ich habe eine Serveranwendung, die in einem separaten Thread an einen Popen -Dateideskriptor ("MyCommand", "W") schreibt, und wenn der Befehl an popen () übergeben wird (), führt die Ausgabe an STDOut oder STDERR, die meine Anwendung beendet. Dies ist jedoch nur ein Problem, wenn meine Serveranwendung über INETD aufgerufen wurde. Wenn ich SSH zum Starten des Servers verwendet habe, hat es dieses Problem nicht.

In ähnlicher Weise, wenn meine Serveranwendung von einem Popen -Dateideskriptor ("MyCommand2", "R") in einem separaten Thread liest und wenn der Befehl an popen () übergeben wird, führt die Ausgabe an Stderr (stdin wird zu meinem Rohr) die Anwendungsausgänge. Dies geschieht wieder nur bei Inetd -Beschwörungen, nicht bei SSH -Beschwörungen.

War es hilfreich?

Lösung

Sie müssen alle existierenden FDs des Prozesses schließen, bevor Sie das Rohr öffnen, und dann die E/A -Umleitung. Das liegt daran, dass der Prozess, wenn er inetd ist, als Daemon ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top