c语言select死循环,linux C语言select函数怎么不能实现sleep呀?

本文提供了一个使用C语言实现无回显输入的例子,通过控制终端设置达到在读取用户输入时不显示输入字符的效果,并结合菜单选择功能进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匿名用户

1级

2011-05-18 回答

无回显输入

noecho();

参考例子;

#include;

#include;

#include;

#include;

static struct termios stored_settings1;

static struct termios stored_settings2;

void echo_off(void)

{

struct termios new_settings;

tcgetattr(0,&stored_settings1);

new_settings =stored_settings1;

new_settings.c_lflag &= (~ECHO);

tcsetattr(0,TCSANOW,&new_settings);

return;

}

void echo_on(void)

{

tcsetattr(0,TCSANOW,&stored_settings1);

return;

}

void set_keypress(void)

{

struct termios new_settings;

tcgetattr(0,&stored_settings2);

new_settings = stored_settings2;

/*Disable canornical mode, and set buffer size to 1 byte */

new_settings.c_lflag&=(~ICANON);

new_settings.c_cc[VTIME] = 0;

new_settings.c_cc[VMIN] = 1;

tcsetattr(0, TCSANOW, &new_settings);

return;

}

void reset_keypress(void)

{

tcsetattr(0, TCSANOW, &stored_settings2);

return;

}

int main()

{

printf("========================\n");

printf("0. Main menu\n");

printf("1. Chapter one\n");

printf("2. Chapter two\n");

printf("3. Chapter three\n");

printf("========================\n");

echo_off();

set_keypress();

char ch;

while((ch = getchar() ) != 'q')

{

switch(ch)

{

case '0':

printf("In main menu.\n");break;

case '1':

printf("Entering chapter one\n");break;

case '2':

printf("Entering chapter two\n");break;

case '3':

printf("Entering chapter three\n");break;

default:

printf("Entering other chapter.\n");

}

}

reset_keypress();

echo_on();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值