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

0

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

[....] Starting the process: sensorlogger

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

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

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

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
    Что делает start-stop-daemon --start --quiet --oknodo --exec / path / to / progam?
  • 0
    Сама по себе команда вызывает ошибку сегмента. Если я запускаю его как root с помощью sudo, он все равно будет содержать мою командную строку.
Показать ещё 2 комментария
Теги:
service
init.d

1 ответ

1
Лучший ответ

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

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

  • 0
    Проблема была обнаружена с помощью этого флага: я не разветвлялся и не возвращался в своем процессе, из-за чего он держал мою оболочку. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню