gpt4 book ai didi

c++ - system() 调用是邪恶的吗?

转载 作者:IT老高 更新时间:2023-10-28 22:21:48 25 4
gpt4 key购买 nike

我正在设计一个 C++ 应用程序,除其他外,它不时执行一些脚本。该应用程序应该是高效的,最好是独立于平台的。

但是,问题是:是否有理由不使用 system() 调用来启动脚本并使用例如 POSIX 工具?到目前为止,我所看到的关于此事的讨论通常归结为:

  1. system() 不太灵活。 (对我好)
  2. 它无法控制正在执行的命令。 (没关系,我只需要脚本的返回值)
  3. 它不是完全独立于平台的。 (现在,这将是一个问题。我真的很想看到它在不同平台上表现不同的示例)
  4. 这是一个安全问题。 (同样,这将是一个问题。有人可以提供一个关于 system() 潜在安全问题的示例吗?)
  5. 还有其他问题吗?

最佳答案

3) It is not quite platform independent (Now, this would be a concern. I would really love to see an example where it behaves differently on different platforms)

好吧,例如 system("ls") 在 Windows 中可能会失败,因为没有 ls 命令。

4) It is a security concern. (Again, this would be an issue. Can someone provide an example of a potential security problem with system() ? )

如果传递给 system 的参数来自用户输入,并且没有经过适当的验证,则它可以用于以原始执行者的权限级别执行不需要的东西。如果它的内容是静态的,那么很容易在可执行镜像中找到它并对其进行修改以做一些讨厌的事情。

关于c++ - system() 调用是邪恶的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com