system(3)命令的常见用途是什么?

时间:2019-08-03 21:37:53

标签: c standard-library c89

我在读著名的the command(1988)时遇到C Language Book。该命令今天常用吗?

摘自本书(第7.8.4节):

  

函数 system(char * s)执行包含在   字符串s,然后继续执行当前程序。的   s的内容在很大程度上取决于本地操作系统。作为一个   一个简单的示例,在UNIX系统上,该语句
  系统(“日期”);
  使程序 date 运行...

给我的印象是,fork-and-exec是从当前程序运行另一个程序的主要方式...

1 个答案:

答案 0 :(得分:2)

system标准C库中的功能,该功能允许C程序调用外部(表示操作系统级别)命令。

(几乎)所有内容都在上面的句子中:该函数是标准C,意味着任何兼容的实现都支持该函数。但是操作系统的作用是错误的...仅依赖于操作系统。

它应该是编写可移植程序的首选方法(因为它是标准C),但不幸的是:

  1. 并非所有操作系统都支持相同的命令和/或相同的语法
  2. 众所周知,大多数系统上都有一些注意事项

后一部分与安全性相关:许多操作系统(至少我所知道的所有操作系统)都具有可配置的 path ,可在其中搜索命令,在这种情况下,system函数会使用那条路。问题是,如果有人设法在他们控制的位置安装了具有相同名称的其他命令,则程序可以通过更改路径来实际调用不是程序员想要的命令。路径。

这就是为什么system普遍不被接受,并且谨慎的程序员仅依赖于较低级别的系统相关函数(如Unix上的fork + exec或Windows上的CreateProcess)或对调用的命令使用绝对路径的原因, system。但是然后,您需要一种相当复杂的配置方法,以使该绝对路径适应各种系统...

相关问题