首次执行时无法 运行 编译 C++ 程序

Unable to run compiled C++ programs on first execution

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

-bash: ./a.out: Input/output error

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

#include <iostream>

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

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

尝试重新启动计算机。 如果这不起作用,请尝试重新安装 OS。

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

我有 运行 sudo dmesg 并且注意到了这一行:

hook_thread_userret calledCyProtectDrv.MemDef ERROR

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