weixin_39677358 2023-09-22 19:20 采纳率: 0%
浏览 7

system("reboot")返回13

触摸屏插上U盘后会执行U盘里面固定路径的qt程序,其界面有个重起按钮,点击调用下面的函数:
void rebootBtClicked()
{
int ret=system("reboot");
printf("ret=d%\n");
}

1、正常情况,点击系统会重启,输出ret=0
2、当我把U盘拔掉后再点击,不会重启,
输出ret=13,意思收到sigpipe信号,表示管道破裂

为什么拔掉U盘执行失败呢?
管道又是哪里创建的呢?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-22 22:15
    关注

    【以下回答由 GPT 生成】

    我们可以通过查找相关的文档和代码来解决这个问题。首先,我们需要查看system()函数的文档以了解它的工作原理。然后,我们需要查阅系统相关的文档以了解重启操作的实现方式。

    在Linux系统中,system()函数是通过fork一个子进程来执行指定的命令,并通过wait函数等待子进程的完成。system()函数将会检查子进程的返回状态,并返回相应的值。

    我们可以利用system()返回的值来判断重启操作是否成功。根据你提供的信息,ret=13表示收到了sigpipe信号,这通常是因为写入已关闭的管道而导致。

    关于为什么拔掉U盘后执行失败,管道是在哪里创建的这个问题,在这里不是很明确。一种可能是U盘被拔出后,设备节点被移除,但是重启操作还在尝试访问该设备而导致错误。另一种可能是重启操作依赖于某些U盘上的文件或配置,这些文件在U盘被拔出后无法访问而导致错误。

    为了更好地理解和解决这个问题,我建议你提供更多的代码和上下文,例如system()调用的具体代码、重启操作的相关代码以及U盘的使用方式和相关设备的配置。这将有助于更好地分析和找到解决方案。

    总结

    根据你的问题描述,我无法给出具体的解决方案,因为当前情况下不清楚问题的根本原因。我建议你提供更多的代码和上下文信息,以便我们更好地帮助你解决这个问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月22日

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致