Linux应用
文章平均质量分 66
个人笔记
绿波电龙_no1
摸鱼!
展开
-
input_dev结构体加注释
* 设备支持的事件类型,主要有EV_SYNC,EV_KEY,EV_KEY,EV_REL,EV_ABS等*/int (*flush)(struct input_dev *dev, struct file *file);/* 用于将此input_dev连接到input_dev_list *//* 支持led事件 */原创 2023-10-07 15:17:26 · 29 阅读 · 0 评论 -
Linux事件编码
注意,所有BTN_TOOL_<name>编码和BTN_TOUCH编码在目的上是互不相干的,手指触摸触摸板产生的事件应该从每个组中产生一个编码。注意:过去,具有BTN_TOOL_FINGER和BTN_TOUCH的触摸设备在用户空间被认为是触摸板,而类似设备没有BTN_TOOL_FINGER被认为是触摸屏。当工具进入到可检测的邻近区域时BTN_TOOL_<name>应该被置1,当工具离开可检测区域时BTN_TOOL_<name>应该被置0。例如,鼠标可能向左移动确定的单位数,但是,它的绝对空间位置是不可知的。原创 2023-10-07 15:11:55 · 225 阅读 · 0 评论 -
ioctl获取触摸屏信息
define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) //大小字段的位移,16。#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) //方向字段的位移,30。#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) //幻数字段的位移,8。#define _IOC_SIZEBITS 14 //大小(size)字段的字位宽度,14bits。原创 2023-10-06 14:33:22 · 88 阅读 · 0 评论 -
Linux触摸屏
通常是按照时间先后顺序来的,譬如第一根手指先触碰到触摸屏,那第一根手指就对应触摸点 0(slot=0),接着第二根手指触碰到触摸屏则对应触摸点 1(slot=1)以此类推!这个通常是硬件所支持的。举个例子,譬如一根手指触碰到触摸屏之后拿开,然后再次触碰触摸屏,这个过程中,假设只有这一根手指进行触碰操作,那么两次触碰对应都是触摸点 0(slot=0),这个无疑义!手指从触摸屏上离开后,该触摸点就消失了、被删除了, 该触摸点的生命周期也就到此结束了,所以它们自然是不同的触摸点, 所以它们的 ID 是不同的。原创 2023-10-06 14:32:06 · 331 阅读 · 0 评论 -
Linux按键数据解析
轴的信息,当前值,最大值最小值,平均值,模糊值,分辨率,是input_dev结构体的成员,通过input_alloc_absinfo函数分配。报告触摸椭圆的中心的x坐标,用于追踪多个触点,最小值和最大值定义了设备活动区域的边界。多点触控(MT)协议的一种功能,标识不同的触摸点,通知接收者准备更新所给的slot。应用程序打开输入设备对应的设备文件,向其发起读操作,那么这个读操作获取到的。,是一个任一的非负整数,由输入驱动生成,正值代表与之关联的。//绝对位移类事件(譬如触摸屏)//同步类事件,用于同步事件。原创 2023-10-06 14:30:03 · 55 阅读 · 0 评论 -
Linux进程间通讯
如果想要实现进程间通信,我们需要借助第三方资源,这个第三方资源其实就是公共资源,这个资源不属于任何进程,而是需要进行通信的各个进程之间的公共资源,这些进程都可以去访问这个公共资源,譬如向公共资源写入数据、或者从公共资源读取数据,从而实现进程间通信的目的。如果想要实现进程间通信,我们需要借助第三方资源,这个第三方资源其实就是公共资源,这个资源不属于任何进程,而是需要进行通信的各个进程之间的公共资源,这些进程都可以去访问这个公共资源,譬如向公共资源写入数据、或者从公共资源读取数据,从而实现进程间通信的目的。原创 2023-10-06 14:27:15 · 21 阅读 · 0 评论 -
Linux守护进程
但对于某些进程,特别是并发服务器进程往往是特别重要的,这些服务器进程会创建子进程I譬如服务器进程在收到客户端请求的时会创建子进程去处理这个请求),如果子进程终止,父进程没有去回收,则子进程将成为僵尸进程,如果父进程等待子进程终止、然后回收子进程,这又会增加父进程的负担、也就是增加服务器的负担,影响服务器进程的并发性能。这一步是关键,守护进程的重点就在于脱离控制终端,子进程通过调用 setsid 函数创建新会话,脱离控制终端,成为新会话的首领进程、同时也是新进程组的组长进程。1.2.与控制终端脱离。原创 2023-10-06 14:26:04 · 26 阅读 · 0 评论 -
Linux会话
控制终端与会话中的所有进程相关联、绑定,控制、影响着会话中所有进程的一些行为特性譬如控制终端产生的信号,将会发送给该会话中的进程(譬如 CTRL+C、CTRL+Z、CTRL+\产生的中断信号、停止信号、退出信号,将发送给前台进程组);2、调用 setsid 函数除了创建新的会话之外、也会创建一个新的进程组 (因为一个会话至少要存在一个进程组),而调用该函数的进程也是这个进程组的组长进程。1、如果调用该函数的进程不是进程组的组长进程,那么调用该函数会创建一个新的会话调用该函数的进程会成为新会话的会话首领!原创 2023-10-06 14:25:30 · 44 阅读 · 0 评论 -
exec函数族
file:如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行。exec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往。一个进程只能修改它自己或者它的子进程所属的进程组,并且子进程在调用exec之后就不能再修改子进程。arg:可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束。:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。原创 2023-10-06 14:23:02 · 23 阅读 · 0 评论 -
Linux父子进程
每一个子进程都有一个父进程,当进程终止或者结束的时候,都会给父进程发送一个SIGCHLD信号,系统默认是父进程忽略这个信号,如果父进程希望被告知其子进程的这种状态改变,则应该捕获这个信号,捕捉函数一般是wait函数来取得子进程ID和子进程状态。父进程先执行fork()系统调用,这个调用的结果是系统中多出了一个跟父进程内容完全一样的进程,这个新进程被称为子进程,当然该进程的PCB中父进程指针是指向第一个进程的。对于键盘上的Ctrl+按键的操作,一般是产生一个信号,然后进程捕捉这个信号。原创 2023-10-06 14:21:17 · 88 阅读 · 1 评论 -
Linux64种信号
这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。默认会导致进程退出的信号有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM。默认会导致进程流产的信号有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ。原创 2023-10-06 14:16:14 · 115 阅读 · 1 评论 -
信号集和信号掩码
⚫ 当应用程序调用 signal()或 sigaction()函数为某一个信号设置处理方式时,进程会自动将该信号添加到信号掩码中, 这样保证了在处理一个给定的信号时,如果此信号再次发生,那么它将会被阻塞;组信号自动添加到信号掩码中, 当信号处理函数结束返回后,再将这组信号从信号掩码中移除;⚫ 除了以上两种方式之外,还可以使用 sigprocmask()系统调用,随时可以显式地向信号掩码中添加/移除信号。//初始化set指向的信号集,使其包含所有信号。//初始化set指向的信号集,使其为空。原创 2023-10-06 14:14:44 · 29 阅读 · 1 评论 -
Linux信号函数
使得进程暂停运行、进入休眠状态,直到进程捕获到一个信号为止,只有执行了信号处理函数并从其返回时, pause()才返回,在这种情况下, pause()返回-1,并且将 errno 设置为 EINTR。sa_sigaction 指针指向的处理函数,而不是 sa_handler,当然允许应用程序使用 sa_handler,但这样。⚫ 接收实时信号的进程要为该信号建立一个信号处理函数,使用sigaction函数为信号建立处理函数,设置定时器,当定时时间到后,内核会向进程发送SIGALRM信号。原创 2023-10-06 14:13:24 · 38 阅读 · 1 评论 -
Linux常见信号
不可靠信号(信号可能丢失)可靠信号(信号不会丢失)原创 2023-10-06 14:12:53 · 30 阅读 · 1 评论 -
时间函数简介
数与 ctime()函数的作用一样,也可将时间转换为可打印输出的字符串形式,与 ctime()函数 的区别在于,ctime()是将 time_t 时间转换为固定格式字符串、而 asctime()则是将 struct tm 表示的分解时间 转换为固定格式的字符串。把 time_t 时间变成一个 struct tm 结构体所表示的时间,与 localtime()所不同的是, gmtime()函数所得到的是 UTC 国际标准时间,并不是计算机的本地时间,这是它们之间的唯一区别。返回UTC时间值,单位是秒。原创 2023-10-06 14:11:52 · 107 阅读 · 1 评论