定位Linux下写句柄错误问题

这篇具有很好参考价值的文章主要介绍了定位Linux下写句柄错误问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编写代码时发现对于以下can 写资源句柄时出现的错误不是很能分析,但是如果将错误码打印出来后,清晰了很多,并且还可以查看。

int Can::Write(const struct can_frame *send_frame)
{ 
  int result;
  std::cout << "before write s_ :" << s_  << std::endl;
  // write
  try{
    result = write(s_, send_frame, sizeof(*send_frame));
    if (result < 0)
    {
      std::cerr <<"Error writing to CAN socket: " << strerror(errno) << std::endl;
      std::cout << "Data size: " << sizeof(*send_frame) << std::endl;
      std::cout << "Socket descriptor: " << s_ << std::endl;
      std::cout << "write result: " << result << std::endl;
      // 错误类型: ENETDOWN
      // 说明: can 接口已关闭
      // 复现方法: 直接手动关闭can, command: sudo ip link set can0 down
      // 目前这种错误不能恢复
      
      // 错误类型: Bad file descriptor
      // 说明: 无效的文件描述符
      // 复现方法:程序中close socket can
      if (errno == EBADF) {
        // CAN 接口已关闭
        cout << "can socket closed" << endl;
        if(reconnectionsTimes <= Setting::MaxCanReconnections)
        {
          if(!ReinitializeCanBus())
          {
            ++reconnectionsTimes;
            std::cerr << "Failed to reinitialize CAN bus, reconnectionsTimes: " << reconnectionsTimes << std::endl;
            return result;
          }else
          {
            cout << "reinitialize CAN bus success! " << endl;
            reconnectionsTimes = 0;
          }
        }
      }
    }
  }catch(std::exception& e)
  {
     std::cout << "Can write error: " << e.what() << std::endl;
  }
  return result;
}

定位Linux下写句柄错误问题,linux
我开发机上错误码对应的位置在如下所述位置。
定位Linux下写句柄错误问题,linux文章来源地址https://www.toymoban.com/news/detail-803483.html

到了这里,关于定位Linux下写句柄错误问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux yum 运行时提示编码问题错误

    报错: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal 解决: 这个报错是编码问题导致的 在文件头加上 # -*- coding:utf-8 -*- 对需要比较的中文字符变量如: label = label.decode(\\\'utf-8\\\') 具体实例: 问题展示: 问题解决: 再次测试:

    2024年02月16日
    浏览(51)
  • 解决Linux下 “正在读取软件包列表... 完成 ....E:无法定位软件包 xx-xx-xxx” 问题

    相信很多朋友在刚安装Ubuntu或CentOS7等其他虚拟机不久时,如果想编译或使用相关工具时,安装相关库、插件等肯定是少不了的,所以这篇文章就来给大家解决安装库、插件等时最常见的一个问题 : 出现该问题说明您安装的虚拟机 软件源有问题,所以您需要换源(这里我推荐

    2024年02月11日
    浏览(55)
  • 【问题解决】make[2]: *** 没有规则可制作目标“/usr/lib/x86_64-linux-gnu/libopencv_XXX错误

    记录一下使用ubuntu中的各种问题 make[2]: *** 没有规则可制作目标“/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.4.2.0”,由“/home/victor/cooperate/ur5_husky/devel/lib/libmoveit_lazy_free_space_updater.so.1.1.13” 需求。 停止。 make[1]: *** [CMakeFiles/Makefile2:26268:moveit/moveit_ros/perception/lazy_free_space_updater/CMak

    2024年01月25日
    浏览(47)
  • linux中快速定位软件安装位置

    linux中快速定位软件安装位置步骤如下: 根据进程的名字定位进程ID 通过进程id查找软件安装位置 原理说明: 缩写解释: cwd: current working directory proc:process ps :process static

    2024年02月16日
    浏览(34)
  • Kali Linux无法定位软件包

    本想更新一下漏扫程序,结果出现了错误 每次遇到问题都要百度,干脆直接记录下来,省的以后麻烦 在kali中出现了无法定位软件包的错误,造成这种错误的方法也可能有很多,比如源错误,网络连接问题,kali系统长时间未更新 还有仓库冲突问题:可以使用urces.list apt_cac

    2024年02月07日
    浏览(55)
  • Linux 内核模块加载过程之重定位

    1.1.1 struct load_info info 加载模块只需要读入模块的二进制代码即可,然后执行init_module系统调用。 我们先介绍下struct load_info info结构体。 struct load_info 是一个用于加载模块时存储相关信息的数据结构。 该结构体包含以下成员: name:模块的名称,以字符串形式存储。 mod:指向

    2024年02月10日
    浏览(138)
  • 记一次奇怪的文件句柄泄露问题

    记录并分享一下最近工作中遇到的 Too many open files 异常的解决过程。 产品有个上传压缩包并导入配置信息到数据库中的功能,主要流程如下: 用户上传压缩包; 后端解压存放在临时目录,并返回列表给用户; 用户选择需要导入哪些信息; 后端按需插入数据库中,完成后删

    2024年02月05日
    浏览(56)
  • Linux 定位服务器硬盘槽位的方法

    2024年02月04日
    浏览(44)
  • RK3588 MPP解码句柄泄露问题记录

    最近在用瑞芯微3588开发板做一个视频处理的项目,前两天拷机发生了闪退,弹出的问题是“打开文件过多”,经过初步排查定位到是MPP硬解码部分出的问题。 我的MPP解码部分主要用来读取网络相机rtsp流,主要参考了一个github项目GitHub - MUZLATAN/ffmpeg_rtsp_mpp: ffmpeg 拉取rtsp h264流

    2024年02月09日
    浏览(91)
  • Linux命令及CPU占用过高的定位分析思路

    不要使用vim打开大文件, vim会一次性读取所有内容到内存,容易造成宿主机内存溢出 。 打开文件前,可以使用 du -h命令查看文件大小 。一般,100MB以下为宜。 j 向下 30j 向下移动30行 k 向上 h 向左 l 向右 0 到行首 ^ 到行首第一个字符,如果前面有空格的话 $ 到行尾 gg 快速到

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包