免费视频素材网站,购物网站建设行业现状,运营的工资一般是多少,工商注册深圳一. 简介
前面几篇文章学习了 Linux异步通知机制#xff0c;以及Linux驱动对异步通知部分涉及的内容。文章地址如下#xff1a;
Linux异步通知简介-CSDN博客
Linux驱动中的异步通知机制#xff1a;信号处理方法-CSDN博客
本文来学习Linux应用程序对异步通知的处理。 二…一. 简介
前面几篇文章学习了 Linux异步通知机制以及Linux驱动对异步通知部分涉及的内容。文章地址如下
Linux异步通知简介-CSDN博客
Linux驱动中的异步通知机制信号处理方法-CSDN博客
本文来学习Linux应用程序对异步通知的处理。 二. Linux应用程序对异步通知的处理
1. 应用程序对异步通知的处理思路
异步通知机制就是当驱动程序可以 访问时会主动告诉应用程序。驱动可以通过主动向应用程序发送信号的方式来报告自己可以访问了应用程序获取到信号以后就可以从驱动设备中读取或者写入数据了。
(1) 首先应用程序需要 注册信号处理函数通过 signal()函数注册并实现信号处理函数旨在当有某个信号报告自己时会进入信号处理函数执行。
(2) 其次驱动如何知道要将某个信号报告给哪个应用程序
这里应用程序就需要将自己的进程号PID告诉 内核。
(3) 最后应用程序要开启异步通知。 2. 应用程序对异步通知的处理步骤
应用程序对异步通知的处理包括以下三步
(1) 注册信号处理函数 应用程序根据驱动程序所使用的信号来设置信号的处理函数应用程序使用 signal() 函数来设置信号的处理函数。前面文章已经详细的讲过了。 (2) 将本应用程序的进程号告诉给内核 使用 fcntl()函数 将本应用程序的进程号告诉给内核如下代码调用 fcntl(fd, F_SETOWN, getpid()) (3) 开启异步通知
使用如下两行程序开启异步通知
flags fcntl(fd, F_GETFL); /* 获取文件状态 */
fcntl(fd, F_SETFL, flags | FASYNC); /* 开启当前进程异步通知功能 */ 重点就是通过 fcntl 函数设置进程状态为 FASYNC 经过这一步驱动程序中的 fasync 函数就会执行。 关于 应用程序对异步通知的处理学习这里接下来通过一个实验来学习驱动与应用程序对异步通知的处理。