c++ - Popen 使 Qt 调试器崩溃

标签 c++ linux qt

我正在尝试构建一个应用程序,向我显示有关我的计算机上不同资源的多个小部件。在代码中,我使用 popen() 运行命令并获取其输出,以显示在我的小部件上。

但是,当我尝试在 Debug模式下运行它时,第一次出现 popen 时,调试器会停止,并且应用程序的行为就像在没有调试器的情况下启动一样。它没有关闭,并且部分代码没有运行,如果没有调试器,我无法弄清楚为什么。

我使用的是 Qt 版本 5.13.2。 这是导致调试器停止的示例。

    char s[500];
    char cmd[20]="ifconfig ";
    strcat(cmd,_currentNIC._nicName.toStdString().c_str());
    strcat(cmd," ");
    FILE* pip=popen(cmd,"r");
    fgets(s,499,pip);

最佳答案

In the code i am using popen() to run a command and get its output, to display on my widget.

由于widget建议您不仅使用Qt Creator作为IDE,还使用Qt框架,我建议您使用QProcess .

Qt 是非常酷的多平台框架,因此如果您不必使用系统特定的 API,则应该避免使用它。


第二件事是使用 ifconfig。您不必使用命令行工具来获取此类信息。 Qt提供了API来提供此类信息参见QNetworkInterface


您还可以向 Qt Creator 项目报告错误。

关于c++ - Popen 使 Qt 调试器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327496/

相关文章:

c++ - 指针访问冲突问题

c++ - 宏定义中双重否定的目的是什么,比如 (!!(expr))?

c++ - 也让 doxygen 记录 #ifdef 部分

linux - 当我使用 {} 时,Find 会创建一个文件

c++ - 如何在QTabWidget标题中设置QWidget?

c++ - 为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

使用 vim 读取带有新行的 Linux cat 命令输出

c - 哪个进程首先终止? child 还是 parent ?

c++ - 该程序(Qt)的信号和插槽问题?

c++ - 重新实现鼠标事件时对 QGraphicsView 的奇怪影响