如何使用termios实现输入键ctl+c的屏蔽?在线等待,急。

shuanger001 2006-04-18 12:32:39
新人,领导让改bug。看例子看不太明白,哪位高人帮帮我看看下面的代码什么意思,并告诉我如何实现屏蔽?谢谢了。
memset( &g_termios, 0, sizeof( struct termios ) );
tcgetattr( fileno( stdin ), &g_termios );
....
....
signal( SIGINT, nsh_sigint_handler );
// for ^Z
g_termios.c_cc[VSUSP] = 3;// Set ^Z to ^C
tcsetattr( fileno( stdin ), TCSANOW, &g_termios );
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuanger001 2006-04-18
  • 打赏
  • 举报
回复
谢谢呀。我刚接触linux。感觉好难呀。就给分。
fierygnu 2006-04-18
  • 打赏
  • 举报
回复
应该用SIG_IGN,不是SIG_DFL。那样就退出了。
shuanger001 2006-04-18
  • 打赏
  • 举报
回复
memset(&g_termios,0,sizeof(struct termios));
1247 tcgetattr(fileno(stdin),&g_termios);
1248 signal(SIGINT,nsh_sigint_handler);

1250 g_termios.c_cc[VSUSP] == 3;
1251 tcsetattr(fileno(stdin),TCSANOW,&g_termios);
1252 signal(SIGINT,SIG_DFL);
这样写可以不?
fierygnu 2006-04-18
  • 打赏
  • 举报
回复
man tcsetattr和termios。

你已经接管了SIGINT
signal( SIGINT, nsh_sigint_handler );
在处理函数里不要退出就可以了。

3,286

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 实用资料发布区
社区管理员
  • 实用资料发布区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧