百度
360搜索
搜狗搜索

linux非阻塞输入函数吗详细介绍

在 Linux 系统中,若要实现非阻塞输入,可借助不同的函数达成。下面为你介绍一些常用的方法。

1. 使用
select 函数

select 函数能够监控多个文件描述符的状态变化,包含标准输入(文件描述符为 0)。你可以利用它来判断是否有输入就绪,进而实现非阻塞输入。
c

 

fd_set readfds

timeout

buffer

readfds

readfds

timeouttv_sec

timeouttv_usec

activity readfds timeout

activity

activity

readfds

buffer buffer

buffer

在上述代码里,select 函数会等待 2 秒,查看标准输入是否有数据可读。要是有数据,就把它读取并打印出来;若超时仍无输入,则输出提示信息。

2. 使用
termios 结构体和
fcntl 函数

借助 termios 结构体能够修改终端的属性,让标准输入变为非阻塞模式。同时,fcntl 函数也可用于设置文件描述符的属性。
c

 

oldt newt

oldf

ch

STDIN_FILENO oldt

newt oldt

newtc_lflag ICANON ECHO

STDIN_FILENO TCSANOW newt

oldf STDIN_FILENO F_GETFL

STDIN_FILENO F_SETFL oldf O_NONBLOCK

STDIN_FILENO ch

ch

STDIN_FILENO TCSANOW oldt

STDIN_FILENO F_SETFL oldf




9912345678910111213800813800425262728293031323334

() { , ; ; ;

(, &); = ; . &= ~( | ); (, , &); = (, , ); (, , | );

((, &, ) == ) { (\n, ); } { (\n); }

(, , &); (, , );

;}

此代码会把标准输入设置成非阻塞模式,尝试读取一个字符。若有输入就打印出来,没有则输出提示信息。最后,会恢复终端的原始属性。

这些方法都能实现非阻塞输入,你可依据自身需求挑选合适的方法。

阅读更多 >>>  input什么意思译成中文,input是什么意思?

网站数据信息

"linux非阻塞输入函数吗"浏览人数已经达到23次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux非阻塞输入函数吗的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!