在Raspberry PI上自动运行C程序

我如何让我的C代码在我的Raspberry PI上自动运行? 我已经看到一个教程,以实现这一目标,但我真的不知道我还缺less什么。 我的初始化脚本如下所示:

#! /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。非常感谢提前!

Solutions Collecting From Web of "在Raspberry PI上自动运行C程序"

在启动时如何运行脚本/服务通常取决于所使用的init系统的类型。 关于我的头顶,我会分散以下四种类型:

  • 嵌入式样式:单个shell脚本具有启动系统的所有命令。 通常,脚本在内核试图作为init进程启动的路径上。
  • BSD风格
  • System V风格:使用/etc/rc*.d/中的/ etc / inittab和latr脚本逐个启动服务
  • systemd

来自Debian的Raspbian服务,所以我想系统V的风格。 你必须将脚本符号链接到/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 

我建议阅读至少手册页update-rc.d(8)和init(8)。

您必须在正确的/etc/rcX.d文件夹中创建指向该init脚本的链接。 在拉斯维加斯,这是通过:

 sudo update-rc.d YOUR_INIT_SCRIPT_NAME defaults 

你可以阅读这个debian how-to以获得更多信息。 你也应该阅读更多关于Debian的运行级别 。

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

这里有一个关于如何在启动时自动登录和启动脚本的教程。

如果它仍然没有工作,那么在脚本或C程序中都有问题。