替代System(),用于在程序中运行批处理文件
Alternative to System() for running a batch file in a program
我想制作一个系统,这样我就可以在程序中运行make文件和其他一些与gcc相关的东西,基本上就是在程序中使用gcc和编译东西。如果我把我想做的所有事情都写在一个批处理文件中,那么我需要在程序中运行该批处理文件。
现在每个人都说System()
呼叫非常糟糕,因为安全性和其他各种因素。因此,考虑到我使用的是c++,这将是System()
运行批处理文件的一个很好的替代方案。如果更可取的话,我想要跨平台的替代方案。
感谢
您可以考虑使用fork
和execl
系列调用,尽管它们与Unix/Linux有关,并且根据您的使用方式,可以说并不比系统更安全。
我非常怀疑你是否会找到一种通用的、跨平台的方法来做到这一点,哪怕只是因为所有平台都有不同和独特的方法。此外,您尝试运行的脚本在不同的平台上肯定会有所不同,并且可能有不同的指定方式,如目录路径等。
我的建议是,首先问问自己,你将如何回答以下问题——这将是我主要关心的问题:
- 如何防止意外/故意滥用
- 我将如何检测我正在运行的脚本中的错误或成功状态
- 我将如何提供依赖关系?例如,在运行脚本B之前,脚本A必须完全正确地运行
- 我将如何报告成功和失败的状态
我的最后一个问题是,你为什么要在C++中这样做?有具体原因吗?当然,我是一个C++传播者,尽管我认为用Perl、Python或Bash等脚本语言会更好地解决这个问题,除非你正在着手做一些更激进的事情。
相关文章:
- 如何通过cpp程序运行shell脚本
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 程序运行,但文件无法打开.C++中的命令行
- 终端命令在程序运行后自动打开图形
- 程序运行,但并非所有内容都显示出来
- 为什么程序运行时我的第二个循环不执行?
- 如何在 c++ 程序运行时隐藏控制台?
- 通过C++应用程序运行 shell 脚本始于 JAVA
- C++字数统计程序使用C字符串错误在程序运行后
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- 如何修复数据库连接的C 程序运行时间错误(0xc0000005)
- 如何通过C++程序运行Windows命令?
- 在程序运行时更改 DLL
- 程序运行时,未读取文件
- C 是否有办法使程序运行,只要引入了新值
- CreateProcess:某些应用程序运行其他应用程序
- 使用一个 C 程序运行 python 脚本(不同的 python 版本)
- 从 WebAPI 项目运行静态类时出现 StackOverflow 异常 - 从控制台应用程序运行时工作正常