当前位置:Linux教程 - Linux文化 - 如何退出启动时自动运行的程序?

如何退出启动时自动运行的程序?


背景:在一个嵌入式linux的机器上开发了一个程序。 自己修改了/etc/init.d中的文件,将自己的执行程序加入到文件中,成功地实现了开机自动运行,但是,不知道该怎样退出。按键后,屏幕上出现了字符,但是,没有命令提示符,也没有执行输入的命令。按^c 也不能够退出。不知道该怎样退出?

>>> 此贴的回复 >> 如果你是写道/etc/inittab中,用#来注释你的那行,然后运行init 如果是用的连接文件如Sxxxx,把文件名改成Kxxxx

>>> 此贴的回复 >> 按^c 也不能够退出???你难道在程序中接管了这样一个信号??? 如果你的嵌入式设备上的LINUX上加入了网络支持,并且开启了telnet服务的话,一切就好办法,直接从远程登录上去,然后再用kill -9杀掉那个进程就行了,然后再去配置文件注释你的那个自启动程序 如果连网络功能都没有,就看你的嵌入式设备上用的什么存储器了,如果是CF卡这类的可拆的存储芯片,就用相应的读卡器接到PC机上,再MOUNT上,再修改配置文件,如果是NOR FLASH这样的不可拆的芯片,并且你的文件系统都放在了上面,就需要用JTAG方式重新再烧写一次你的BOOTLOADER,KERNEL,FILE SYSTEM

>>> 此贴的回复 >> 我想那是因为你的程序接管了串口终端,在串口中输入的任何字符都被你的程序接收了,从而没有让终端管理程序处理你的终止信号,忘了问一件事,你的默认终端是串口还是其它(也就是BASH管理的是什么终端?)???? 目前你没有任何软办法让你的程序停止了,主要是看一下你的串口通信程序有没有什么可以溢出内存的地方,利用这种溢出内存的办法让你的程序终止,从而就可以运行到其它程序中去了 如果这种类似方法都不行的话,就只有打“存储器”的主意了,如同我上一回复中所说的那样

>>> 此贴的回复 >> 呵呵,我装的是Ubuntu6.04版,本本是HP4106,显示驱动,声卡等等装上去后就搞定.中文支持很好. http://cdimage.ubuntu.com/releases/dapper/flight-5/

>>> 此贴的回复 >> 我明白LZ的意思了,LZ采用的输入设备是键盘,输出设备可能是LCD之类,没有采用串口终端,启动时就像REDHAT的启动界面一样,无法使用CTRL C来结束掉程序,并且只会响应CTRL ALT DEL这个热键,需要登录后才能使用CTRL C,这在PC机上也是一样的情况,刷CF卡的方法也简单啊,为什么不用呢??? 还有就是GRUB的方法,一般说来在嵌入式上很少用GRUB,都是自己移植的BOOTLOADER,如VIVI,U-BOOT等。用GRUB的方法就是让你将默认终端重定向到串口设备,如果是这样的话,你的串口通信程序多半是操作的原始串口,而系统在一启动就打开了相应的串口,你的串口程序就会打开串口失败,从而退出,从而就达到结束它的目的了 如果你用的是U-BOOT,VIVI之类的,在启动的时候可以改变让你的内核使用的默认终端的,当然,你需要在内核中首先支持,你可以在网上查找如何让你的内核支持串口终端之类的文章,我猜你现在还是可以烧内核,烧BOOTLOADER的吧?只不过无法进入到应用程序而已???!!!!

>>> 此贴的回复 >> 一般说来,LINUX内核完成初始化后,第一个运行的程序就是init,然后在里面启动bash,再由此解析初始化启动脚本,最后再启动XWINDOW,所以首先都是由bash来接管控制台,也就是说你的CTRL C是由BASH响应并KILL掉你的进程,图形界面往往都是从BASH来启动的,在未登录的情况下,你的那个BASH不会响应CTRL C信号,若要在这个过程中加以控制,我想首先得从init程序入手,去找出为什么在未登录之前不响应CTRL C信号?即便是你想做成交互式启动,我想也需要从这个程序入手,启动过程如下: init ---------- inittab -------------- rc.local

你如果仅仅只是想控制你的那个串口程序的话,建议在串口程序中规定一定的协议,由程序来互责与用户交互,或者就直接使用串口终端的方式(这样有一缺点就是你的使用终端的程序都会受影响) 还有一建议,就是将你的自启动程序放在rc.local中,我上面所说的启动过程只是一种约定,完全可以不采用这种方式,因为你的init程序可以自己编写,你还可以完全不用rc.local文件,就如同你现在的方式一样。

>>> 此贴的回复 >> 你找到在什么地方启动的sh,就在哪个地方去加上你要自启动的程序就行了 主要是去找ect目录下的各种脚本文件,实在不行,去看你的init程序的源码