SIEMENS A5E00430098 吸收板
-
面议
使用异步IO方式读鼠标和键盘
进程正常阻塞读键盘,然后将读鼠标设置为异步IO方式。进程正常阻塞读键盘时,如果鼠标没有数据的话,进程不关心读鼠标的事情,如果鼠标数据来了,底层鼠标驱动就会向进程发送一个SIGIO信号,然后调用注册的SIGIO信号捕获函数读鼠标数据。当然也可以反过来,进程正常阻塞读鼠标,然后将读键盘设置为异步IO方式。
异步IO这个名字怎么理解?
答:比如以异步IO方式读鼠标数据为例,如果知道什么时间数据会来,等这个时间到时再去读数据,这就是步调统一的同步读。如果不知道什么时候会有数据来,这种就只能是什么时候数据来了就什么时候读,这种就是异步的读。之所叫异步,是因为我不知道你什么时候来,没办法统一步调(异步的),只能是随时来是随时读。
不过使用异步IO有两个前提:
(1)底层驱动要有相应的发送SIGIO信号的代码,只有这样当底层数据准备好后,底层才会发送SIGIO信号给进程。我们之所以可以对鼠标设置异步IO,是因为人家在实现鼠标驱动时,有写发送SIGIO信号的代码,如果驱动程序是我们自己写的,发送SIGIO的代码就需要我们自己来写。
(2)应用层进行相应的异步IO的设置,否者无法使用异步IO应用层进行异步IO设置时,使用的也是fcntl函数。
使用异步IO时,应用层的设置步骤
①调用signal函数对SIGIO信号设置捕获函数。在捕获函数里面实现读操作,比如读鼠标。
②使用fcntl函数,将接收SIGIO信号的进程设置为当前进程。如果不设置的,底层驱动并不知道将SIGIO信号发送给哪一个进程。
fcntl(mousefd, F_SETOWN, getpid());
③使用fcntl函数,对文件描述符增设O_ASYNC的状态标志,让fd支持异步IO
SIEMENS 6ES7331-7KF02-0AB0 配件
SIEMENS 6ES7212-1BB23-0XB8 配件
ABB TC512V1 3BSE018059R1 电子产品-
卡特拉汉莫 D5PR3R1 配件-
AB 1606-XLE240E 模块
西门子 6SE6440-2UD33-7EA1 电子产品
西门子 6ES7414-3XM05-0AB0 电子产品
PHOENIX PSR-ESAM4/3X1\DC24/AC230V\6A 配件
FANUC A860-0360-V501 配件-
KEYENCE CV-110 控制器
安川 SGDV-330A01A 配件-
Matrox SOL6M4AE*(Y7247-03) 采集卡-
Matrox METE0R2MC/4*( Y751-0301) 采集-
SMC MGPM12-50Z 配件-
ABB LD GRB-01 位置检测模块-
ABB LD GRB-01 位置检测模块
AB 1762-L40BWAR 模块-
施耐德 XBTOT4320 配件
西门子 6SN1123-1AB00-1CA1,2*50A, 配件
西门子 1P 6SN1118-ONK01-OAAI 带内存卡 配件
西门子 222-1BF22-OXAO 配件
西门子 6SN1114-ONB01-OAA1 配件
西门子 6ES7 331-1KF01(00)-0AB0 电子产品
西门子 6ES7 216-2BD23-0XB0 电子产品
西门子 6SB2074-4AA00-0AA0 电子产品
ABB M2VA63B-4 电机
西门子 6SE6440-2UD22-2BA1 电子产品
SUNX EX-15E 配件
SCHNEIDER TSXAEZ801 电子产品-
SCHNEIDER TSXDMZ28DR 电子产品-
SCHNEIDER TSXDSZ08R5 电子产品
SCHNEIDER TSXDEZ12D2 电子产品-
西门子 6ES7 315-2AG10-0AB0 电子产品
西门子 6ES7 972-0BB42-0BA0 电子产品
" Siemens" QRA50M 电子产品
施耐德 170INT11000 模块
英飞凌 FZ1800R16KF4S1 配件
施耐德 171CCC96030 模块
日本东坂 TD-2M33 驱动-
科尔摩根 AKD-P01207-NACN-0054 电子产品-
GE IC200ALG326 模块
西门子 RXC21.1 控制器
AB 22B-D1P4N104 配件
三菱 FX3U-80MT/ES-A 配件
三菱 FX2N-16EX 配件
三菱 FX3U-1PG 配件
三菱 FX3U-485ADP-MB 配件
三菱 GS2107-WTBD 配件
SIEMENS 3TK2821-1CB30 配件
SIEMENS 6ES7241-1CH30-1XB0 配件
HP惠普 DPS-320KB-1 电源
AB 193-EC2EE 配件
西门子 6SE6440-2UD23-0BA1 电子产品
SIEMENS 6SE6420-2UD13-7AA1 电子产品
安川 CIMR-VCBA0006BAA 配件
AB MVI56-MCMR 配件
西门子 6ES7972-0BB60-0XA0 配件
SIEMENS 6ES7521-1BL00-0AB0 配件
SIEMENS 6ES7972-0AA01-0XA0 配件
SIEMENS 6ES7953-8LL31-0AA0 配件
SIEMENS 6ES7132-4BF00-0AA0 配件
SIEMENS 6ES7972-0CB20-0XA0 配件
光洋 TRD-2E2500V 配件
西门子 216-2BD23-0XB8 电气
西门子 223-1PL22-0XA8 电气
JUSTEK JSMD-02 配件
AB 1756-RM/A 光纤模块-
AB 1756-L73 CPU模块-