Closed GoogleCodeExporter closed 9 years ago
After playing around with my sample program, I believe I identified why the
restore commands do not work. It seems that the "restore character" needs to be
wrapped with single quotes, otherwise stty will silently ignore.
For instance, for the moment, the following line is trying to restore ctrl c
that way:
exec("/bin/sh", "-c", "/bin/stty intr ^C < /dev/tty");
It should actually be written this way:
exec("/bin/sh", "-c", "/bin/stty intr '^C' < /dev/tty");
I succesfully tested the above change on Solaris 10 x86.
Actually, when you issue the following commands, this shows what error happens:
-bash-3.00$ /bin/sh -c "/bin/stty intr ^C < /dev/tty"
/bin/sh: C: not found
-bash-3.00$ stty: : I/O error
-bash-3.00$ /bin/sh -c "/bin/stty intr '^C' < /dev/tty"
-bash-3.00
Escaping with single quotes is required because of passing the command to
/bin/sh -c.
Original comment by jli...@gmail.com
on 3 Jan 2013 at 4:00
How about using the -g option of stty to save and restore the options ? I just
came across this one when reading the man page:
The -g flag is designed to facilitate the saving and restor-
ing of terminal state from the shell level. For example, a
program may:
saveterm="$(stty -g)" # save terminal state
stty (new settings) # set new state
... # ...
stty $saveterm # restore terminal state
Since the -a format is so loosely specified, scripts that
save and restore terminal settings should use the -g option.
Original comment by jli...@gmail.com
on 3 Jan 2013 at 4:00
Fixed in Issue 58
Original comment by mab...@gmail.com
on 4 Jan 2013 at 2:00
Original comment by mab...@gmail.com
on 4 Jan 2013 at 2:01
Original issue reported on code.google.com by
mab...@gmail.com
on 19 Nov 2012 at 1:03