linux — запуск программы на C ++ как службы с использованием init.d

Я написал программу на C ++, которая работает на Raspberry Pi и прослушивает встроенный последовательный порт (в цикле) для получения информации из сенсорной сети, которую я настроил. Я хочу, чтобы это программное обеспечение запускалось при загрузке pi, поэтому для этой цели я написал сценарий инициализации. Сценарий успешно запускает процесс, когда данные заносятся в мою базу данных, но всякий раз, когда я использую «сервисный запуск датчика запуска», я получаю следующее:

[....] Starting the process: sensorlogger

который просто сидит в моей командной строке, пока я не закрою программу.

  • Почему, несмотря на то, что процесс запущен, я не получаю обратно свой терминал, и что я мог бы изучить, чтобы это исправить?
  • Помешает ли это запуску моего процесса при загрузке pi или запуску других служб?

У меня есть выдержка из моего начального текста ниже. Я могу включить весь сценарий, если это необходимо.
Заранее спасибо за любую помощь, которую я могу получить с этим!

test -x $DAEMON || exit 5
case $1 in
start)
# Checked the PID file exists and check the actual status of process
if [ -e $PIDFILE ]; then
status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"# If the status is SUCCESS then don't need to start again.
if [ $status = "0" ]; then
exit # Exit
fi
fi
# Start the daemon.
log_daemon_msg "Starting the process" "$NAME"# Start the daemon with the help of start-stop-daemon
# Log the message appropriately
if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON ; then
log_end_msg 0
else
log_end_msg 1
fi
;;

0

Решение

попробуйте добавить опцию -b

start-stop-daemon —start —quiet -b —oknodo —pidfile $ PIDFILE —exec $ DAEMON;

1

Другие решения


По вопросам рекламы [email protected]