代码之家  ›  专栏  ›  技术社区  ›  Jet Blue

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

  •  0
  • Jet Blue  · 技术社区  · 5 年前

    我偶然发现 the command 读著名的 C Language Book (1988). 这个命令现在常用吗?

    书中(第7.8.4节):

    功能 执行包含在 字符串,然后恢复当前程序的执行。这个 一个简单的例子,在UNIX系统上
    系统(“日期”);
    导致该计划 日期 要运行。。。

    我的印象是,fork和exec是从当前程序运行另一个程序的主要方式。。。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Serge Ballesta    5 年前

    system 信息技术 这个 来自标准C库的函数,该函数允许C程序调用外部(意味着操作系统级别)命令。

    (几乎)所有内容都在上面这句话中:函数是标准C,这意味着它得到了任何一致性实现的支持。但操作系统所做的是错误的。。。就靠你了。

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

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

    后一部分与安全性有关:许多操作系统(至少据我所知)都有可配置的 路径 搜索命令,在这种情况下 系统 函数确实使用该路径。问题是,通过改变路径,如果有人在他们控制的地方安装了同名的不同命令,并且还设法改变了路径,那么程序实际上可以调用一个不是程序员想要的命令。

    这就是为什么 系统 通常是不受欢迎的,谨慎的程序员只依赖于较低级别的依赖于系统的函数,如Unix上的fork+exec或Windows上的CreateProcess,或者对从中调用的命令使用绝对路径 系统 .但是你需要一个相当复杂的配置方式来适应不同系统的绝对路径。。。