【问题标题】:Launching executable in C++在 C++ 中启动可执行文件
【发布时间】:2022-01-19 22:53:17
【问题描述】:

我希望通过 API 调用启动可执行文件,但我不确定是否应该事先使用 posix API 检查可执行位。这方面的最佳做法是什么?

【问题讨论】:

  • 我认为您在这里徘徊了意见,但我的意见是“如果您无法运行该文件,您会很快发现,因此可能不值得检查。”跨度>
  • 对。也许这是一条我不应该踏入的小巷,但也许我正在寻找明确的“位检查无论如何都会发生,不要这样做”,但我对此没有信心,因为我..缺乏文件系统 io 经验。 . [/踢摇滚]
  • 不管怎样,在检查和调用之间,另一个进程可以更改文件权限。

标签: c++ exec posix


【解决方案1】:

您将用于启动进程的所有 Posix API(例如execve() 和朋友)将在原子和安全的上下文中执行任何和所有必需的文件系统权限检查(并且在用户空间中都不是)。最佳做法是简单地使用可用的系统调用。

作为旁注,您可以浏览调用您所说的标准fork/exec 团队的各种工具的源代码。例如GNU make。我敢肯定在某些地方会有例外,但实际上我从未见过真正的软件在调用 exec() 之前尝试验证用户空间中的文件系统权限。

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 2015-05-16
    • 2014-01-15
    • 2011-05-07
    • 1970-01-01
    • 2010-09-07
    • 2019-07-13
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多