Ich möchte ein C-Programm im Hintergrund vom Terminal aus starten. Das Programm fungiert als Bluetooth-Treiber, was bedeutet, dass es geöffnet bleiben muss, während das System läuft. Ich habe es mit nohup und start-stop-daemon versucht, aber in beiden Fällen erhält das C-Programm den Exit-Befehl und wird geschlossen.
Wie kann ich ein C-Programm von einem Terminal aus starten, das dann im Hintergrund läuft? Ich möchte es starten und dann das Terminal auf der GUI schließen können (während das gestartete C-Programm munter weiterläuft).
Danke!
Antwort1
Scheint, als bräuchte das Programm zum Ausführen ein Steuerterminal (das können Sie herausfinden, strace
wenn Sie den Quellcode nicht haben).
Sie können dem Programm ein Steuerterminal zur Verfügung stellen (auch wenn Sie es als Teil des Systemstarts starten), indem Sie es über screen
(ot tmux
) ausführen.
screen cmd arg1 arg2
Antwort2
Ich denke, um ein Programm vollständig zu dämonisieren, müssten Sie
nohup the_command args ... </dev/null >/dev/null 2>/dev/null &
disown
Abhängig von Ihrem System sollten Sie in Erwägung ziehen, es beim Systemstart mit „upstart“ oder „init“ oder etwas Ähnlichem zu starten.