Я хочу запустить программу C в фоновом режиме из терминала. Программа действует как драйвер bluetooth, что означает, что она должна оставаться открытой, пока система работает. Я пробовал с nohup и start-stop-daemon, но в обоих случаях программа C получает команду выхода и закрывается.
Как мне запустить программу на языке C из терминала, которая затем будет работать в фоновом режиме? Я хочу запустить ее, а затем закрыть терминал в графическом интерфейсе (при этом запущенная программа на языке C будет продолжать работать).
Спасибо!
решение1
Похоже, что для запуска программы необходим управляющий терминал (вы можете узнать это, strace
если у вас нет исходного кода).
Вы можете предоставить программе управляющий терминал (даже при запуске ее как части загрузки системы), запустив ее через screen
(ot tmux
).
screen cmd arg1 arg2
решение2
Я думаю, чтобы полностью демонизировать программу, вам нужно сделать следующее:
nohup the_command args ... </dev/null >/dev/null 2>/dev/null &
disown
В зависимости от вашей системы, вам следует рассмотреть возможность запуска его при загрузке системы с помощью upstart или init или чего-то подобного.