首页 > 解决方案 > 为什么 system() 存在?

问题描述

许多论文等提到对“system()”的调用是不安全且不可移植的。我不反对他们的论点。

不过,我注意到许多 Unix 实用程序都有一个等效的 C 库。如果没有,源代码可用于各种这些工具。

虽然许多论文等都反对goto.,但有些人可以为它的使用提出论据,而且它在 C 中的原因很简单。

那么,我们为什么需要system()?有多少现有代码依赖于它而无法轻易更改?

标签: c

解决方案


讽刺的回答因为如果它不存在人们会问为什么这个功能不存在......

更好的答案
许多系统功能不是“C”标准的一部分,而是 Linux 规范的一部分,Windows 很可能有一些等价物。因此,如果您正在编写一个仅在 Linux 环境中使用的应用程序,那么使用这些功能就不是问题,因此实际上很有用。如果您正在编写一个可以在 Linux 和 Windows(或其他)上运行的应用程序,这些调用就会出现问题,因为它们可能无法在系统之间移植。关键(imo)是您只需了解问题/疑虑并进行相应的编程(例如,使用适当的#ifdef 来保护代码等......)


推荐阅读