中止 Linux 上的阻塞读取

2024-02-26

我在线程中运行的 Linux 中有一个阻塞读取。

在程序关闭期间,我想使线程脱离此读取。不幸的是,我无法使用轮询或选择并编写正确的代码,因为读取的文件是不实现轮询/选择功能的设备驱动程序。

作为临时解决方案,我当前通过 pthread_kill 向线程发送 SIGUSR1 信号,并从处理程序调用 pthread_exit。这会杀死线程并到目前为止有效,但我对解决方案不满意,因为信号可能出现在任何地方,而不仅仅是在读取中。

Linux 上有什么机制可以中断阻塞读取吗?

顺便说一句 - 我尝试从不同的线程关闭文件句柄,希望这会产生某种 IO 错误。不幸的是这个简单的解决方案根本不起作用。


如果您只想让信号影响读取,请使用pthread_sigmask() http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html保持信号阻塞直到读取之前,然后再次阻塞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中止 Linux 上的阻塞读取 的相关文章

  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T

随机推荐

  • Jvm 崩溃:Java 运行时环境检测到致命错误

    我在实时服务器上发生了 Tomcat 崩溃 生成了 hs err pid 文件 其中有一个有问题的帧 gt wordcopy fwd dest aligned 0x54 我搜索了所有类似的 jvm 崩溃案例 但找不到这个有问题的框架的含义
  • 不支持的类版本错误

    当尝试从使用 Eclipse IDE 使用 jdk1 6 制作的客户端调用使用 NETbeans 使用 jdk1 7 制作的 EJB 时 我收到以下错误 Exception in thread main java lang Unsuppor
  • Oracle: ORA-01722: 无效数字

    我有一个查询 当我在 sqlplus 中运行它时效果很好 SQL gt SELECT T 0 ID AS ATTR 1 T 0 0 ID AS ATTR 2 CASE WHEN T 0 ID 1 AND T 0 0 ID 3 OR T 0
  • 从firebase客户端sdk获取user_pseudo_id?

    在 Firebase 分析中 user pseudo id自动登录bigquery 但是 我想在 firebase 客户端 sdk 例如 android ios sdk 中获取此值来指定用户 我在 firebase 的文档中找到了 但找不到
  • Paw 在外部浏览器中打开链接

    在开发端点时 我需要遵循相当复杂 繁琐的登录过程来向我们的网守进行身份验证 为此 我在 Paw 中打开开发人员登录页面 它在爪子内部打开并正确呈现内容 如果我单击按钮实际登录 则会打开外部浏览器 导致 Paw 无法跟踪正确的 cookie
  • 使用 strcmp 比较字符数组中的字符

    我已将 xml 文件读入 char 中 并尝试将该数组中的每个元素与某些字符 例如 进行比较 char 数组 test 只是一个包含一个元素的数组 包含要比较的字符 我必须这样做 否则 strcmp 方法会给我一个有关将 char 转换为
  • AzureML:“训练火柴盒推荐器”不起作用,并且没有描述错误

    我尝试使用该模块创建自己的实验 但未能成功 这是我得到的例外 错误 0018 用户 项目 评分三元组的训练数据集包含无效数据 关键 InputParameters DataTable Rows 14 Columns 3 estimatedS
  • 协议与自身的行为

    我最近在读Swift 中的协议 通用类型约束和数组 http letvargo mooo com protocols generic type constraints and arrays in swift 我的问题涉及博客中的以下两个示例
  • 线程安全,无易失性

    谁能解释为什么这个例子是线程安全的 没有易失性 http www cs umd edu pugh java memoryModel DoubleCheckedLocking html http www cs umd edu pugh jav
  • html5 相机输入可以在 Windows 10 平板电脑上使用吗?

    TL DR html5 相机输入可以在 Windows 10 平板电脑上使用吗 Details 设备 Dell Venue 8 Pro 平板电脑 操作系统 Windows 10 浏览器 Chrome Setup 使用以下 html 创建并托
  • 带参数的 before_filter

    我有一个方法可以执行以下操作 before filter authenticate rights only gt show def authenticate rights project Project find params id red
  • 如何在命令中传递对象参数?

    我使用带有参数的新命令创建了 eclipse rcp 项目的plugin xml ArrayList
  • itertools.islice 与列表切片比较

    我一直在尝试应用一种算法根据特定标准将 python 列表缩小为较小的列表 由于原始列表的体积很大 大约有 100k 个元素 我尝试使用 itertools 来避免多次内存分配 所以我想出了这个 reducedVec F if sum 1
  • 使用 Bash 发出 POST 请求

    我有 100 个 Jetpack 必须登录才能配置 我正在尝试在 bash 脚本中执行此操作 但我没有运气 我可以毫无问题地连接到 wifi 但我的 POST 请求没有实现任何目标 有什么建议吗 这是我的 github 的链接 我有在 Bu
  • 构建给定文本中最常用单词的 ASCII 图表 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 挑战
  • 每个页面上都需要InitializeCulture()吗?

    我有一个需要本地化的网络表单网站 我的意思是 它是本地化的 我只需要根据域设置正确的语言即可 就像是 protected override void InitializeCulture var i Request Url Host ToLo
  • 如何分割文件并保留每个部分的第一行?

    Given 一个大文本数据文件 例如 CSV 格式 具有 特殊 第一行 例如字段名称 Wanted coreutils 的等价物split l命令 但附加要求原始文件中的标题行出现在每个结果片段的开头 我猜是一些混合物split and h
  • 如何查找整数数组中每个元素的排名

    我想找出数组中每个元素从0开始的排名 例如 arr 2 1 3 rank will be 1 0 2 解释 rank of 2 is 1 because 2 is greater than exactly 1 element rank of
  • 按钮控件和 TBitmap 的底层替代品,无需编写预混合代码即可正确处理 PNG 透明度

    Delphi 2010的TSpeedButtons似乎并没有真正正确支持PNG透明度 因为Glyph属性内部使用TBitmap 而TBitmap用于位图 并且不能正确支持PNG透明度 那么TSpeedButton Glyph就无法支持透明度
  • 中止 Linux 上的阻塞读取

    我在线程中运行的 Linux 中有一个阻塞读取 在程序关闭期间 我想使线程脱离此读取 不幸的是 我无法使用轮询或选择并编写正确的代码 因为读取的文件是不实现轮询 选择功能的设备驱动程序 作为临时解决方案 我当前通过 pthread kill