我在阅读著名的命令 (1988年)时偶然发现了C语言手册。这个命令现在常用吗?
(第7.8.4节):
功能系统(char * s )执行字符串s中包含的命令,然后恢复当前程序的执行。S的内容很大程度上依赖于本地操作系统。作为一个简单的例子,在UNIX系统上,语句 system("date"); 导致运行程序日期..。
我的印象是分叉和执行是从当前程序运行另一个程序的主要方式.
发布于 2019-08-03 22:09:48
system it 标准C库中的函数,该库允许C程序调用外部命令(意为OS级别)。
(几乎)所有内容都在上面的句子中:函数是标准C,这意味着任何符合的实现都支持它。但操作系统做的是错误的..。只是依赖操作系统。
它应该是编写可移植程序的首选方式(因为它是标准C),但不幸的是:
后一部分与安全性有关:许多OS (至少我所知道的)有一个可配置的路径,其中搜索命令,在这种情况下,system函数确实使用该路径。问题是,通过更改路径,程序可以在现实中调用一个不是程序员想要的命令,如果有人设法在他们控制的地方安装了一个同名的不同命令,并且还设法更改了路径。
这就是为什么system通常不受欢迎的原因,谨慎的程序员只依赖底层的系统依赖函数,如Unix上的fork+exec或Windows上的CreateProcess,或者对从system调用的命令使用绝对路径。但是你需要一种相当复杂的配置方式来适应不同的系统.
https://stackoverflow.com/questions/57342273
复制相似问题