如何使用 C++ 检测 Linux 中串行端口上运行的缓冲区溢出

2023-12-11

我有一个大问题。目前我正在通过以下钩子访问串行端口:

fd = open( "/dev/ttyS1", O_RDWR | O_NOCTTY )

然后我使用以下代码块从中读取

i = select( fd + 1, &rfds, NULL, NULL, &tv )
...
iLen = read( fd, buf, MAX_PACKET_LEN )

问题是,在阅读之前,我需要检测是否存在缓冲区溢出。串行端口级别和内部 tty 翻转缓冲区。

我们尝试了cat /proc/tty/driver/serial但它似乎没有列出超限(参见下面的输出)

1: uart:16550A port:000002F8 irq:3 tx:70774 rx:862484 fe:44443 pe:270023 brk:30301 RTS|CTS|DTR

根据内核源代码,您应该使用 TIOCGICOUNT ioctl。第三个 ioctl 参数应该是指向以下结构的指针,定义于<linux/serial.h> :

/*
 * Serial input interrupt line counters -- external structure
 * Four lines can interrupt: CTS, DSR, RI, DCD
 */
struct serial_icounter_struct {
        int cts, dsr, rng, dcd;
        int rx, tx;
        int frame, overrun, parity, brk;
        int buf_overrun;
        int reserved[9];
};

但我不知道是否每个司机都能检测到所有情况。

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

如何使用 C++ 检测 Linux 中串行端口上运行的缓冲区溢出 的相关文章

  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 为什么使用signalfd无法捕获SIGSEGV?

    我的系统是ubuntu 12 04 我将示例修改为man 2 signalfd 并添加sigaddset mask SIGSEGV 在示例中 但我无法得到输出SIGSEGV被生成 这是一个错误吗glibc 源代码片段如下 sigemptys
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • BeagleBone Black 如何用作大容量存储设备?

    是否可以使用 BB 作为大容量存储设备 我希望将其连接到可以从 USB 连接 例如 USB 闪存驱动器 读取文件的音频播放器并充当包含一个特定文件夹的数据存储设备 及其子文件夹 从文件系统 如果可能 在连接到开发板的闪存驱动器上 正如设备规
  • 通过名称获取进程ID

    我想在 Linux 下获得一个给定其名称的进程 ID 有没有一种简单的方法可以做到这一点 我还没有在 C 上找到任何可以轻松使用的东西 如果追求 易于使用 char buf 512 FILE cmd pipe popen pidof s p
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • Python实时读取串口数据

    我正在使用 Python 中的脚本通过串行端口以 2Mbps 的速度从 PIC 微控制器收集数据 PIC 在 2Mbps 下完美定时工作 FTDI USB 串行端口在 2Mbps 下工作也很好 均通过示波器验证 我每秒发送消息 大小约为 1
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 路由是否会影响具有绑定源地址的套接字?

    假设我有两个网络接口 eth0有地址10 0 0 1 eth1有地址192 168 0 1 Using route or ip route add我已将其设置为路由 所有地址至eth0 1 2 3 4只为了eth1 所以数据包到1 2 3
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从

随机推荐

  • 有没有办法只显示基于数组的 json 对象中选定的属性

    我有以下对象 calendarLists Title titel1 Color blue number 1 Title titel2 Color green number 2 Title titel3 Color red number 3
  • SpringBoot:GenericJDBCException: 无法获取 JDBC 连接

    我通过使用以下属性动态创建 DataSource 来连接到 mysql 数据库 它工作正常 但一段时间后它不断给我错误 无法获取 JDBC 连接 package com test db import org springframework
  • 使用堆快照分析显示内存地址,但不显示代码行。如何确定导致堆增长的原因?

    我的应用程序即将完成 在提交到应用程序商店之前 我正在使用 Instruments 来优化性能 我注意到 每当我执行特定操作 从外部服务器更新应用程序中的信息 时 我的堆就会增长约 350 KB 我在 stackoverflow 和 App
  • Linq 帮助 - Sql 跟踪返回结果,但数据上下文返回 null

    var adminCov db SearchAgg AdminCovs SingleOrDefault l gt l AdminCovGuid covSourceGuid adminCov 不断返回 null 当我运行 SQL Profil
  • 如何在犰狳中序列化稀疏矩阵并与boost的mpi实现一起使用?

    我一直在尝试序列化稀疏矩阵犰狳 cpp 库 我正在做一些大规模的数值计算 其中数据存储在稀疏矩阵中 我想使用 mpi Boost 实现 收集这些矩阵并对来自不同节点的矩阵求和 我现在陷入困境的是如何将稀疏矩阵从一个节点发送到其他节点 Boo
  • 由于 windows 中的 openssl/ETimedout,gem install Rails 无法工作

    最初 我有ruby 1 9 3我的 Windows 7 中安装的版本 我已经安装了ruby 2 0 0p195最近并从命令提示符进行了测试 ruby v ruby e puts 100 irb 效果很好 ruby v gives ruby
  • 如何从 Spring Boot Endpoint Service 返回自定义 SOAP 错误?

    我已经设置了一个 Web 服务应用程序 它接收并仅记录来自第三方的 SOAP 请求 记录后必须返回定义的响应 如果没有错误并且接收到的 SOAP 请求与 WSDL 匹配 则此操作不会出现任何问题 不幸的是 第三方在发送无效内容甚至随机数据时
  • 向 CMake 添加命令行选项

    我正在使用 CMake 构建一个大型库 我希望用户能够有选择地启用 禁用构建过程的某些部分 如何将命令行选项添加到我的 CMake 构建中 例如这样用户就可以输入类似的内容cmake build partone nobuild parttw
  • Java 可视化 - 如何在 java 中转置 JTable?

    我正在寻找允许在 UI 上调换 jTable 的方法 可以通过单击按钮或其他操作来实现 我的主要问题是我应该如何为此目的构建数据模型 abstractTableModel Java中有没有现成的方法支持这种转置 如果您谈论的是行 列反转 那
  • 从 getline() 读取逗号分隔的整数

    如何从下面的代码中读取单独的整数 while getline cin line for each integer in line do something myVector push back each integer 输入是这样的 1 2
  • 如何捕获 Laravel 5 中的异常/缺失页面?

    在 Laravel 5 中 App missing and App error不可用 那么你现在如何捕获异常和丢失页面呢 我在文档中找不到与此相关的任何信息 在 Laravel 5 中 您可以通过编辑以下内容来捕获异常render中的方法a
  • 检查输入是否是有效的罗马数字

    我有一个程序可以将罗马数字转换为整数 反之亦然 我的问题是我真的不知道如何创建一个函数来检查用户输入是否是有效的罗马数字 我现在的代码 def checkIfRomanNumeral numeral Controls that the us
  • 尽管 KEEPALIVE,TCP、recv 函数仍挂起

    在服务器挂掉后 TCP keepalive 具有较小的超时 是否会阻止客户端挂在接收上 场景 服务器和客户端运行在不同的机器上 客户端通过带有 KEEPALIVE 选项的 TCP 连接到服务器 客户端发送 Hello server 并等待响
  • 不同类型的指针赋值

    我们可以在 C 中分配一个字符串 如下所示 char string string Hello printf s n string string printf p n string memory address 一个数字可以按如下方式完成 i
  • Passport.js 验证用户身份时出现问题

    我无法获取 Passport 来验证我的用户 由于某种原因 passport authenticate 方法总是失败 我不明白的是 如果我在护照调用之前添加中间件 则可以通过以下方式访问用户数据req user 关于为什么 Passport
  • Oracle 11.1.0.7 和 WAMP oci_connect 失败

    我正在尝试在我的本地 WAMP 服务器和我拥有的一些 Oracle 11 1 0 7 之间配置一个简单的连接 显然 PHP 有各种无法启动的解决方案和神奇情况 我正在运行 WAMP 的最新 32 位版本 我今天再次获取它只是为了检查 数据库
  • 如何创建网络服务

    我使用 Ruby on Rails 框架构建了一个网站 该站点将包含一个 Flash 应用程序 该应用程序将使用 Web 服务与 Rails 应用程序进行交互 我的合作伙伴构建了 Flash 应用程序 他告诉我 Flash 应用程序通过 W
  • 使用R中的mat2listw函数创建空间权重矩阵

    我正在尝试使用 mat2listw 函数在 R 中创建一个权重对象 我有一个非常大的空间权重矩阵 大约 22 000x22 000 这是在 Excel 中创建并读入 R 的 我现在正在尝试实现 library spdep SW mat2li
  • Java中将图像亮度转换为灰度错误

    我使用以下代码在 Java 中将图像转换为灰度 BufferedImage originalImage ImageIO read new File home david input bmp BufferedImage grayImage n
  • 如何使用 C++ 检测 Linux 中串行端口上运行的缓冲区溢出

    我有一个大问题 目前我正在通过以下钩子访问串行端口 fd open dev ttyS1 O RDWR O NOCTTY 然后我使用以下代码块从中读取 i select fd 1 rfds NULL NULL tv iLen read fd