| Linux Forum Index » Linux Embedded » Control C not working (sh in initrd after PXE boot)... |
|
Page 1 of 1 |
|
| Author |
Message |
| Christophe... |
Posted: Tue Sep 22, 2009 11:28 pm |
|
|
|
Guest
|
Hi.
I boot my embedded target with PXE, using my own initrd.
The init script launches a sh.
Everything works fine.
The only issue is that the Control C has no effect.
So I have no way to kill a running command (e.g ping...)
The stty looks OK (intr = ^C)
The keys like ^Q, ^D, ^S work fine.
Is it because the signal is blocked ?
Any idea how to make Ctrl C work ?
Thanks
Chris |
|
|
| Back to top |
|
|
|
| Christophe... |
Posted: Wed Sep 23, 2009 10:54 pm |
|
|
|
Guest
|
Hi.
In fact, I had no /dev/tty.
I made a little mknod and now CtrlC is back :)
Thanks for you answer.
Chris |
|
|
| Back to top |
|
|
|
| Norbert van Bolhuis... |
Posted: Thu Sep 24, 2009 1:42 am |
|
|
|
Guest
|
For ctrl-c to work, you need a controlling terminal (the TTY column) and a
process group. If you have a '?' in the TTY column, ctrl-c won't work.
In the past I have seen this happen because of this code in drivers/char/tty_io.c:
if (device == SYSCONS_DEV) {
struct console *c = console_drivers;
while(c && !c->device)
c = c->next;
if (!c)
return -ENODEV;
device = c->device(c);
filp->f_flags |= O_NONBLOCK; /* Don't let /dev/console block */
noctty = 1;
}
Note that O_NOCTTY (no controlling terminal) is forced on whenever
/dev/console is opened (noctty = 1). Possible workarounds:
1) Run getty on something other than /dev/console. For example,
if you console is on the first serial port, run getty on /dev/ttyS0.
I believe this is the "correct" answer.
2) You could also change getty to do a TIOCSCTTY ioctl explicitly after
it has opened the terminal.
3) You could remove the forcing of noctty on from tty_io.c
Christophe wrote:
Quote: Hi.
I boot my embedded target with PXE, using my own initrd.
The init script launches a sh.
Everything works fine.
The only issue is that the Control C has no effect.
So I have no way to kill a running command (e.g ping...)
The stty looks OK (intr = ^C)
The keys like ^Q, ^D, ^S work fine.
Is it because the signal is blocked ?
Any idea how to make Ctrl C work ?
Thanks
Chris |
|
|
| Back to top |
|
|
|
|