【问题标题】:Unable to run compiled C++ programs on first execution首次执行时无法运行已编译的 C++ 程序
【发布时间】:2020-08-26 19:12:37
【问题描述】:

自从升级到 Mac OS Catalina 后,每次编译 C++ 程序时,它都不会第一次运行。程序按预期编译,可执行文件已创建并且在所有方面看起来都很正常。但是,当我运行程序时,它会立即打印:

-bash: ./a.out: 输入/输出错误

立即再次运行该程序完全符合预期。下面是流程的屏幕截图和用于生成错误的简单程序。

#include <iostream>

int main ()
{
    std::cout << "test\n";
    return 0;
}

【问题讨论】:

标签: c++ macos-catalina


【解决方案1】:

经过几天的挖掘,我能够解决这个问题。问题是我的组织使用 Cylance 和高级威胁缓解工具。 Catalina 升级后,Cylance 在系统偏好设置中的安全设置下失去了其全盘访问权限。我授予了权限,并且能够获得解决问题的更新策略。

我跑了sudo dmesg 并注意到这条线:

hook_thread_userret 调用 CyProtectDrv.MemDef 错误

这似乎是一个潜在的问题。我搜索了那个字符串,发现第一个结果与 Cylance 相关。这就是让我走上这条非常具体的解决方案之路的原因。我希望这可以为其他人节省大量时间。

【讨论】:

    【解决方案2】:

    输入/输出错误可能是由于文件系统中的问题。如果您长时间使用过时的版本并且不需要可用的存储空间和 RAM,则可能会出现此问题。

    尝试重新启动您的计算机。 如果这不起作用,请尽可能重新安装操作系统。

    【讨论】:

    • 我在文件系统上剩余超过 700GB,如前所述,程序的后续运行按需要运行。我尝试了几次重新启动以及使用不同的 C++ 编译器进行编译,但行为没有改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2013-02-06
    • 2016-02-23
    • 2014-10-30
    • 2012-05-03
    • 2021-06-04
    相关资源
    最近更新 更多