分享

Linux下自动启动应用程序与如何跳出加载的死循环

 清章 2012-10-24

 声明:版权归章哥所有!!侵权盗版必纠!

    

     搞Linux应用时,我们经常需要在kernel启动文件系统的时候要在后台自动随系统启动一些进程,还有mount一些设备。由于最近在学习字符设备驱动,写了一个简单了流水灯程序ledshow。但是我想让他在我的2440开机的时候自动就可以运行我们的pid。自己在网上也看了许多的资料,但是对于我这种Unix菜鸟来说,真的是很难接受。搞了几天终于明白了其中的一些学问。

下面具体讲讲怎么实现。

我默认你已经熟知了shell编程知识。在虚拟机中用arm-linux-gcc生成了ledshow的可执行文件。通过共享文件夹传给了windows,然后在secureCRT中输入rz命令把你通过交叉编译过得可执行文件传给你的开发板,我放到了/tmp目录下。

然后因为我们开发板上的linux启动有他自己的一套规律。所以我们在/etc/init.d下可以找到一个rcS的脚本文件,我用gvim打开它会看到如下代码:

#!/bin/sh

/bin/mount -a

/sbin/ifconfig eth0 192.168.0.15 up

/sbin/ifconfig eth1 192.168.0.16 up

/bin/mknod /dev/can c 98 0

/tmp/hello     start //这是我之前的一个程序

exec /usr/etc/rc.touch

以上这些代码就是决定了在kernel加载后所要运行的一些个程序。

所以我们只需要在里面加入,

cd /tmp

./ledshow &

reboot就可以实现我们想要的功能。有人会有疑问,&这个是什么意思的,因为我当时试的时候没加这个东西,直接start,就会出现无法显示界面,且ledshow这个死循环无法被杀死的状态,无奈我只能把led的驱动卸载然后重新编译内核,着实麻烦了一下。希望大家可以总结经验教训。至于后台和前台的关系,由于本人也是菜鸟,不是很懂。希望大家努力学习Unix,把他当做兴趣共同探索。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多