2013-08-12 5 views
1

Как я могу сделать код C для автоматического запуска на моем малиновом PI? Я видел учебник, чтобы достичь этого, но я действительно не знаю, чего я все еще не хватает. Мой сценарий инициализации отображается как это следующим образом:Авто-запуск программы C на малине PI

#! /bin/sh 
# /etc/init.d/my_settings 
# 
# Something that could run always can be written here 
### BEGIN INIT INFO 
# Provides:  my_settings 
# Required-Start: $remote_fs $syslog 
# Required-Stop: $remote_fs $syslog 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# X-Interactive: true 
# Short-Description: Script to start C program at boot time 
# Description:  Enable service provided by my_settings 
### END INIT INFO 

# Carry out different functions when asked to by the system 
case "$1" in 
start) 
echo "Starting RPi Data Collector Program" 
# run application you want to start 
sudo /home/pi/Documents/C_Projects/cfor_RPi/charlie & 
;; 
stop) 
echo "Killing RPi Data Collector Program" 
# kills the application you want to stop 
sudo killall charlie 
;; 
*) 
echo "Usage: /etc/init.d/my_settings {start | stop}" 
exit 1 
;; 
esac 
exit 0 

Проблема заключается в том, что моя программа не запускается во время загрузки, и я не знаю, почему. Что мне не хватать? Является ли это «killall» заявлением «убийство» какого-то полезного процесса во время выполнения? Я делаю этот код для запуска в качестве фонового приложения, но я знаю, что через несколько секунд, когда инициализация RPi, он запрашивает имя пользователя и пароль для инициализации сеанса. Возможно ли, что мой RPi не выполняет этот код, потому что я не предоставляю информацию о регистрации? У меня нет монитора, так что моя программа должна запускаться, как только я подключу свой Rpi. Большое спасибо!

+1

Это НИЧЕГО не имеет отношения к C, это как запустить любую произвольную программу на этой платформе. Пожалуйста, обновите теги соответствующим образом. – UpAndAdam

ответ

1

Как скрипты/службы запускаются во время запуска, как правило, зависит от типа используемой системы init. В верхней части моей головы я бы раскрепостил следующие 4 типа:

  • Встраиваемый стиль: У одного сценария оболочки есть все команды для запуска системы. Обычно сценарий находится на одном пути, который ядро ​​пытается запустить как процесс init.
  • BSD стиль
  • System стиль V: Это использует/и т.д./inittab и ЛАТР скрипты в /etc/rc*.d/ для запуска служб один за другим
  • Systemd

Raspbian dervices из Debian , поэтому я считаю System V style. Вы должны симлинкой сценария к /etc/rc2.d как

ln -s /etc/init.d/your-script /etc/rc2.d/S08my-script 

не структура названия ссылок: Он говорит, он должен быть запущен, когда вводится уровень запуска, и «08» определяет (сделайте ls /etc/rc2.d/, чтобы увидеть другие ссылки).

Подробнее: init (8).

update-rc.d (8) - это правильное сочетание для создания символических ссылок на debian. Обратитесь к странице справочника: советы

update-rc.d - install and remove System-V style init script links 

я читать по крайней мере человек страниц обновления-rc.d (8) и инициализации (8).

+0

Спасибо за ваш ответ M.E.L .. – JIPers

3

Вам нужно будет создать ссылки на этот сценарий инициализации в соответствующих папках /etc/rcX.d. На raspbian это делается:

sudo update-rc.d YOUR_INIT_SCRIPT_NAME defaults 

Вы можете прочитать эту debian how-to для получения дополнительной информации. Также вы должны узнать больше о run levels in Debian.

+0

Спасибо hek2mgl ... Я уже выполнил следующие шаги: sudo chmod 755 /etc/init.d/my_settings - sudo/etc/init.d/my_settings start - sudo /etc/init.d/my_settings stop. Чтобы зарегистрировать мой скрипт для запуска при запуске и завершении работы: sudo update-rc.d my_settings по умолчанию ... Что еще мне нужно выполнить? Каковы были ваши рекомендации в этом смысле? Заранее спасибо!! – JIPers

+0

вы разместили некоторые отладочные сообщения в этом скрипте, чтобы убедиться, что он запущен? – hek2mgl

0

http://www.akeric.com/blog/?p=1976

Вот учебник о том, как авто-Логгин и запустить скрипт при загрузке.

Если это не работает, проблема возникает либо в вашем скрипте, либо в вашей программе на C.

 Смежные вопросы

  • Нет связанных вопросов^_^