linux 中断和终端测试程序

该程序测试相应终端的 ctrl - c 中断和终端的控制等

 

/* *
* testsignal.c
*/
#include
< stdio.h >
#include
< signal.h >
#include
< termios.h >
#include
< fcntl.h >
void  ctrl_c_hander();
void  set_cr_mode();
void  reset_mode( int  flag);
int  main( int  ac, char   * av[])
{
int  counts = 0 ,i = 0 ;
reset_mode(
0 );
set_cr_mode();
signal(SIGINT,ctrl_c_hander);
while ( 1 )
{
        counts
++ ;
        printf(
" loop " );
        
for (i = counts;i > 0 ;i -- )
                printf(
" ! " );
        printf(
" \n " );
        
if (ac == 2 )
        {
                
// if(atoi(av[1][0])==counts)
                
//       exit(1);
        }
        sleep(
1 );
}
reset_mode(
1 );
}
void  ctrl_c_hander()
{
puts(
" do you want exit.(y/n)\n " );
if (tolower(getchar()) == ' y ' )
        {
        reset_mode(
1 );
        exit(
1 );
        }
return ;
}
void  set_cr_mode()
{
struct  termios setting;
tcgetattr(
0 , & setting);
setting.c_lflag 
&=   ~ ICANON;
setting.c_lflag 
&=   ~ ECHO;
setting.c_cc[VMIN]
= 1 ;
tcsetattr(
0 ,TCSANOW, & setting);
}
void  reset_mode( int  flag)
{
static   struct  termios info;
// static int    termflag;
static   int     does;
if (flag == 0 )
        {
        tcgetattr(
0 , & info);
//       termflag=fcntl(0,F_GETFL);
        does = 1 ;
        }
else   if (does == 1 )
        {
//       fcntl(0,F_SETFL,termflag);
        tcsetattr( 0 ,TCSANOW, & info);
        }
}

 

转载于:https://www.cnblogs.com/ringwang/archive/2009/04/05/1429871.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值