概述
在Linux系统中,如果想要启动一个进程,往往想到的第一个函数应该就是system(),从而导致system()被滥用。但是实际上system()的执行速度是比较慢的,如果系统启动的时候使用system()执行大量命令,会导致启动速度奇慢无比。
system("cmd")在实现的时候首先会fork一个进程,然后调用shell解析cmd, shell首先会解析cmd,然后继续fork一个进程,然后execvp(argc,argv)启动目标程序。一个简单的优化策略是system()直接调用execvp(argc,argv),这样调用开销大概只有原函数的一半左右,可以大大地节约启动时间。
当然更好的策略是尽量使用函数调用,不要直接启动新进程完成任务。
old new
system(cmd) SYSTEM (cmd)
{ {
fork if(not_support)
{ system(cmd)
execvp(“/bin/sh –c cmd”) else
} {
wait() paser_cmd(argc,argv)
} fork
{
execvp(argc,argv)
}
wait()
}
最后
以上就是酷酷溪流为你收集整理的提高system()执行速度的全部内容,希望文章能够帮你解决提高system()执行速度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复