忽略 ctrl-c
我正在尝试编写一个 shell,但现在我想忽略 CtrlC。
目前,我的程序忽略 SIGINT 并在信号到来时打印新行,但如何防止打印 ^C
?
当按 CtrlC 时,这是我得到的:
myshell>^C
myshell>^C
myshell>^C
但我想要:
myshell>
myshell>
myshell>
这是与 CtrlC:
extern "C" void disp( int sig )
{
printf("\n");
}
main()
{
sigset( SIGINT, disp );
while(1)
{
Command::_currentCommand.prompt();
yyparse();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是终端确实回显了那个东西。 你必须告诉它停止这样做。 我的
stty
手册页说运行
strace stty ctlecho
显示,因此使用正确的参数运行 ioctl 可以关闭该控制回显。 查看
man termios
以获得方便的接口。 使用它们很容易或者,您可以考虑使用 GNU readline 来读取一行输入。 据我所知,它可以选择阻止终端执行此类操作。
It's the terminal that does echo that thing. You have to tell it to stop doing that. My manpage of
stty
saysrunning
strace stty ctlecho
showsSo running ioctl with the right parameters could switch that control echo off. Look into
man termios
for a convenient interface to those. It's easy to use themAlternatively, you can consider using
GNU readline
to read a line of input. As far as i know, it has options to stop the terminal doing that sort of stuff.尝试打印退格字符,又名 \b ?
Try printing the backspace character, aka \b ?