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

时间:2012-08-01 14:43:00

标签: c++ gcc system

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

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

由于

1 个答案:

答案 0 :(得分:2)

你可以使用forkexecl系列的呼叫,虽然这些系统被绑定到Unix / Linux,并且根据你使用它们的方式,可以说比系统更安全。

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

我的建议是首先问问自己,你将如何处理以下问题 - 这将是我的主要关注点:

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

我的最后一个问题是你为什么要用C ++做这个?有具体原因吗?当然,我是一名C ++传播者,尽管我认为用Perl,Python或者Bash这样的脚本语言可以更好地解决这个问题,除非你开始做更激进的事情。