系统()有什么不好?
What's so bad about system()?
既然你正在构建一个Windows专属程序,为什么调用system()
如此讨厌?自从我开始在C++编程以来,"不要触摸系统"是我经常听到的。我温顺地遵守了这个原则,但这有什么不好的呢?
您在系统调用中放入的内容取决于您将在其上运行程序的操作系统。所以它是完全不便携的。此外,很多事情都可能出错,因为你只是把一个命令扔进了虚空,并希望一切都会好起来的。错误处理(例如 - 您要运行的程序不存在,或 PATH 设置不正确,或者您没有权限等)非常困难甚至不可能。
除此之外,正如评论中大多数时候(实际上是"大多数",如 99.999%)所指出的那样,没有必要使用 system
.
std::system()
要求您信任该命令来执行所需的操作。您无法验证此假设是否合理。例如,PATH 环境变量的异常值可能会导致执行与标准设置不同的程序。
调用std::system()
的行为取决于系统。即使目前的要求是应用程序不需要在其他操作系统上运行,此要求也可能更改。考虑到std::system()
通常用于可以通过更便携的方式实现的目的(尤其是初学者),因此不需要在此处引入平台依赖性。
system()
将操作系统的命令解释器作为单独的进程调用。 很多时候,有本机 API 可以直接在调用进程中完成相同的结果,并对其进行更多控制。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 文件系统:复制功能的速度秘诀是什么
- 超市管理系统的类别之间应该是什么关系?
- 在QT资源系统中,前缀比文件系统路径的优势是什么?
- 在64位系统上创建一个非常大的数组的缺点是什么
- 在bazel中创建仅系统头库的正确方法是什么
- 系统堆栈中的两个函数的递归调用(将不同数量的数组作为参数传递)有什么区别
- FMOD::系统*系统;它做什么
- 在 C++11 中,获取系统即时报价/时间的最快方法是什么?
- 什么是升压系统error_code 2.
- 挂载文件系统和挂载磁盘驱动器有什么区别
- c++.系统调用move什么时候会失败
- 在应用程序中阻止系统关闭的最佳方法是什么
- C++构建系统-使用什么
- 在实时系统上保存缓存数据的最佳方法是什么
- C++构造函数调用 boost::文件系统::p ath 作为参数 - 什么也没发生
- 系统()有什么不好?
- 提升文件系统,需要帮助了解我在做什么
- C++创建进程 - 系统错误#2找不到文件 - 我的文件路径有什么问题?
- 在一个非常复杂的程序中,替换系统的最佳方法是什么