
Ich habe einen kleinen C-Code, den ich im Hintergrund ausführen möchte. Wenn ich das Programm mit starte &
, kann ich den Prozess in top oder mit ps finden und sehe die erwartete E/A-Anzeige im Terminal oder anderswo, wenn ich ihn in eine Datei weiterleite oder mit ausführe nohup
.
Hier ist mein Problem: Anstatt die App zu starten und dann sofort die Kontrolle an die Befehlszeile zurückzugeben, scheint das Terminal zu warten, bis ich die Eingabetaste drücke (oder den Aufwärtspfeil verwende, um durch den Befehlsverlauf zu scrollen), um die Befehlszeile erneut anzuzeigen. Ist es möglich, die App im Hintergrund zu starten und wieder Zugriff auf die Befehlszeile zu erhalten, ohne erneut die Eingabetaste drücken zu müssen? Ich habe verschiedene Kombinationen von nohup
, disown
, 2>&1
, usw. ausprobiert ... ohne Erfolg.
Antwort1
Die Steuerung does
kehrt unmittelbar nach dem Starten der App zur Shell zurück, was daran zu erkennen ist, dass Sie mit den Pfeiltasten auf den Verlauf zugreifen können. Aus irgendeinem Grund druckt die Shell die Eingabeaufforderung erst aus, wenn Sie die Eingabetaste drücken. Sie können dies überprüfen, indem Sie einen Befehl eingeben, bevor Sie die Eingabetaste drücken ls
. Das Ergebnis sollte auf dem Bildschirm angezeigt werden.