首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统(3)命令的常见用途是什么?

系统(3)命令的常见用途是什么?
EN

Stack Overflow用户
提问于 2019-08-03 21:37:53
回答 1查看 64关注 0票数 1

我在阅读著名的命令 (1988年)时偶然发现了C语言手册。这个命令现在常用吗?

(第7.8.4节):

功能系统(char * s )执行字符串s中包含的命令,然后恢复当前程序的执行。S的内容很大程度上依赖于本地操作系统。作为一个简单的例子,在UNIX系统上,语句 system("date"); 导致运行程序日期..。

我的印象是分叉和执行是从当前程序运行另一个程序的主要方式.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-03 22:09:48

system it 标准C库中的函数,该库允许C程序调用外部命令(意为OS级别)。

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

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

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57342273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档