gpt4 book ai didi

c++ - System() 的替代方案,用于在程序中运行批处理文件

转载 作者:行者123 更新时间:2023-11-30 04:26:05 24 4
gpt4 key购买 nike

我想制作一个系统,我可以在一个程序中运行一个 make 文件和其他几个 gcc 相关的东西,基本上是在程序中使用 gcc 和编译东西。如果我将我想做的所有事情都写到一个批处理文件中,那么我需要从程序中运行该批处理文件。

现在每个人都说 System() 调用非常糟糕,因为安全性和其他各种原因。因此,考虑到我正在使用 c++,什么是 System() 运行批处理文件的良好替代方案。如果愿意,我想要跨平台的替代方案。

谢谢

最佳答案

您可以考虑使用 forkexecl 调用系列,尽管它们与 Unix/Linux 相关,并且根据您使用它们的方式,可以说不是比系统更安全。

我非常怀疑您是否会找到一种通用的跨平台方式来执行此操作,因为所有平台都有不同且独特的方式来执行此操作。此外,您尝试运行的脚本无疑在不同的平台上必须有所不同,并且可能有不同的方式来指定诸如目录路径等内容。

我的建议是首先问问自己,您将如何回答以下问题 - 这是我主要关心的问题:

  • 如何防止意外/故意滥用?
  • 我如何检测正在运行的脚本中的错误或成功状态?
  • 我将如何提供依赖项?例如。脚本 A 必须在脚本 B 运行之前完整且正确地运行。
  • 我将如何报告成功和失败状态。

我的最后一个问题是,为什么要在 C++ 中执行此操作?有具体原因吗?当然,我是 C++ 的传道者,尽管我认为用 Perl、Python 或可能的 Bash 等脚本语言可以更好地解决这个问题,除非你正在着手进行更激进的事情。

关于c++ - System() 的替代方案,用于在程序中运行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761708/

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