编程语言应用

首页 » 常识 » 常识 » Linux系统编程triggerha
TUhjnbcbe - 2022/7/27 20:07:00

哈喽,我是老吴,赓续纪录我的研习心得。

一、超过的滞后性

咱们憧憬超过是线性:每一私人付出一些勉力后,都指望它有空谷传声的成就。

事实是:做出勉力后,成绩的显现通常滞后。

惟有在几个月或几年后,咱们才意识到昔时研习/处事的真实代价。

“绝望谷地”的涌现:人们在投入数周或数月的勤恳处事后,却没有任何看得见的成就,因而加入深感懊丧的时代。

何如变动:1变动意识。岁月并没有徒劳,它可是积蓄起来了。直到许久之后,昔时勉力的一块代价才会显现出来。

2找寻一些也许辅助自身对立滞后超过所带来的失落心思的本领。譬喻教育习惯的四大定律,详细的如立即嘉奖、习惯追踪等。

二、triggerhappy源码懂得/3.select()的运用

正文目录:

1.thd.c/process_events()源码懂得2.I/O多路复用(Multiplexing)是为知道决甚么题目3.I/O多路复用打算思绪4.select()的用法5.和poll/epoll对照(增加学问,非中心)6.triggerhappy:thd.c/process_devices()源码懂得7.干系参考

写稿宗旨:

经过浏览triggerhappy的源码,研习I/O多路复用的办法之一select()的应用办法。

测试处境:

Ubuntu16.04Gcc5.4.01.thd.c/process_events()源码懂得1.1process_events()的效用

1)效用:

监控input摆设;读取input事项,并实行响应的action;查看socket能否有接遭到夂箢。

2)移用过程:

thd.cmain()start_readers()process_events()1.2process_events()的体例:4个环节

1)创建主轮回:

while(count_devices()0

cmd_fd!=-1){[...]}

2)在主轮回内,应用select监测多个input摆设文献(中心):

while(...){[...]//someinitforselectretval=select(max_fd+1,rfds,NULL,NULL,tv);}

本文的中心便是知道 select干系的学问点。

3)select返回后,移用process_devices()读取数据(中心):

while(...){[...]//someinitforselectretval=select(max_fd+1,rfds,NULL,NULL,tv);if(retval){process_devices();}}

process_devices()是triggerhappy的中心函数。

先大抵知道一下它的效用:关于每一个有待读数据的input摆设文献,都移用read()函数读取数据,而后懂得数据,依据懂得成绩去实行响应的action,action在example.conf中界说:

$cat/etc/triggerhappy/triggers.d/example.confKEY_VOLUMEUP1/usr/bin/amixersetMaster5%+...

/usr/bin/amixersetMaster5%+便是一个action。

临时不必太深入,后续会特地写一篇文章来详细懂得process_devices()。

4)能否有采纳到用户夂箢(th-cmd)?

while(...){[...]if(retval){process_devices();if(cmd_fd!=-1FD_ISSET(cmd_fd,rfds)){struct

1
查看完整版本: Linux系统编程triggerha