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 函数就会执行。

关于 应用程序对异步通知的处理学习这里,接下来通过一个实验来学习驱动与应用程序对异步通知的处理。

相关推荐

  1. Linux应用程序异步通知处理

    2024-03-13 00:34:03       41 阅读
  2. Linux异步通知实验:应用程序异步通知处理

    2024-03-13 00:34:03       53 阅读
  3. Linux异步通知简介

    2024-03-13 00:34:03       50 阅读
  4. Linux驱动开发——(八)Linux异步通知

    2024-03-13 00:34:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 00:34:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 00:34:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 00:34:03       87 阅读
  4. Python语言-面向对象

    2024-03-13 00:34:03       96 阅读

热门阅读

  1. 框架和函数库的区别

    2024-03-13 00:34:03       43 阅读
  2. android pdf框架-5,生成pdf

    2024-03-13 00:34:03       43 阅读
  3. 深入理解Nginx日志级别

    2024-03-13 00:34:03       40 阅读
  4. 库表设计基本字段

    2024-03-13 00:34:03       38 阅读
  5. LLM(大语言模型)常用评测指标-MAP@R

    2024-03-13 00:34:03       42 阅读
  6. 使用Docker部署debezium来监控MySQL数据库

    2024-03-13 00:34:03       46 阅读
  7. 微信小程序重新加载当前页面、刷新当前页面

    2024-03-13 00:34:03       41 阅读