用freescale的ltib等工具生成了一个根文件系统,但是发现在按下 ctrl-c 不能终止程序。
写一个测试程序
#include <stdio.h>
#include <signal.h>
void sig_handle(int sig)
{
if(SIGINT==sig)
{
printf("press again!/n");
}
}
int main(void)
{
signal(SIGINT, sig_handle);
while(1)
sleep(10);
return 0;
}
测试程序没有打印出press again, 看来是内核没有把信号送到当前进程,为什么呢?
忽然发现在系统启动时,有一个信息提示:
/bin/sh: can't access tty; job control turned off
看来题与这个错误提示有关,打开/etc/inittab,其中有一行
::respawn:/bin/sh
把这行改成::respawn:/sbin/getty -L ttymxc0 115200 vt100后就ctrl+c可以工作了,但是登录时需要帐号,密码。
懒得去研究getty的自动登陆,看了busybox里的例子,发现加上终端就可以了
ttymxc0::respawn:/bin/sh
其中ttymxc0是串口用的设备节点名字,有的系统可能是tty1或ttyS1