LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 741|回复: 3

开机自动运行程序的脚步有问题,大家帮忙看看。

[复制链接]
发表于 2007-1-4 17:57:28 | 显示全部楼层 |阅读模式
开机自动运行rc.local脚步,里面的内容如下:

#!/bin/sh

/sbin/ifconfig lo 127.0.0.1 up
/sbin/route add 127.0.0.0 lo

/sbin/ifconfig eth0 192.168.1.214 up
/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 eth0
/sbin/route add default gw 192.168.1.1 eth0

echo
echo "any key to stop running POS..."
echo

while
read -n1 -t1 key;
do
        if [ ! -z "$key" ]
        then
        clear && ls && exit 1;
        fi
done

/home/bin/nano-X & /home/bin/MainApp

/sbin/hwclock -w
sync

exit 0


问题出在以下部分:
while
read -n1 -t1 key;
do
        if [ ! -z "$key" ]
        then
        clear && ls && exit 1;
        fi
done

/home/bin/nano-X & /home/bin/MainApp


默认等待1秒,如果有按键,则exit 1到终端下;如果没,自动运行指定程序。
因为我的程序MainApp会用到并口打印机的,结果当打印机未上电时,程序会死掉,连linux内核都死掉(键盘灯不受控制)。。。

但我将
while
read -n1 -t1 key;
do
        if [ ! -z "$key" ]
        then
        clear && ls && exit 1;
        fi
done
这部分代码删除后,问题解决了。。。。


初步怀疑是,在运行MainApp程序后,上面的死循环和我发到并口的信息有冲突,但具体原因不明。。。我尝试将该部分代码放到rc.local之前的脚步运行,但问题依旧。。。
请问,上面的脚步写的有问题嘛?能实现自动等待检测按键输入,超时跳过的功能,有别的办法嘛??
发表于 2007-1-4 21:03:33 | 显示全部楼层
while
read -n1 -t1 key;
do
if [ ! -z "$key" ]
then
clear && ls && exit 1;
fi
done
你这个写法很怪呢. 为什么循环呢, 而且循环的写法好像也比较少见
为什么不直接
if read -n1 -t1 key
then
clear && ls && exit 1;
fi
回复 支持 反对

使用道具 举报

发表于 2007-1-5 09:15:36 | 显示全部楼层
如果确认这个地方真的有问题,而且按照你的要求,把程序这样改 你尝试一下:
while
read -n1 -t1 key;
do
if [ ! -z "$key" ]
then
clear ;
ls ;
exit 1;
fi
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-5 13:28:55 | 显示全部楼层
刚试了,还是不行,我改成只执行exit 1,也是一样,并口打印机未上电时,发数据到并口会连系统都死掉。。。

但比较怪异的是,我先按某键进入终端,然后手动运行该脚步来跑程序就没事!!
系统开机自动运行该脚步,和我终止该脚步然后再手动运行有区别嘛??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表