Verwenden fork()
einen ‚Klon‘ zu schaffen, die Sie verarbeiten.
Wenn Sie die Ergebnisse von bash (oder was auch immer andere Befehl Sie exec) verwenden pipe()
und dup()
eine Verbindung zwischen den Prozessen von der Standardausgabe zu erstellen (und Standardfehler, wenn Sie das auch möchten) des exec'd Befehl . Ihr Prozess wird lesen können (und schreiben, wenn Sie mehr Pipes erstellen) exec'd Programme ausgegebenen Text.
Normalerweise verwendet der Klonprozess entweder dup()
, um die Standardeingabe/-ausgabe/Fehler auf Pipes wiederherzustellen, oder schließt standardmäßige Standardeingabe/-ausgabe/Fehler, um zu verhindern, dass das Executed-Programm mit dem Benutzer interagiert.
Verwenden Sie dann eine der Formen exec()
.
Wenn Sie Prozess ist nichtwait()
wird der Exec-Prozess 'im Hintergrund' laufen, eigentlich gleichzeitig. Der Effekt, im Hintergrund zu sein, ist hauptsächlich das Ergebnis der Trennung vom Terminal (Tastatur und Fenster).
Wenn die Pipes korrekt eingerichtet sind, kann Ihr Programm mit dem fork + exec'd-Prozess sprechen, aber es ist leicht, eine Dead-Lock-Funktion zu erhalten. Daher schlage ich vor, dass Sie sich darauf beschränken, die Ausgabe zu lesen.
Wenn mehr Informationen benötigt werden, fragen Sie danach. –
oh, und wie auch immer, das ist ein cooles Tool-Projekt. –
und perfekt zu sein, ja, ich brauche die Ergebnisse von Bashscript zurück zu C-Programm ... = D –