我是靠谱客的博主 酷酷溪流,最近开发中收集的这篇文章主要介绍提高system()执行速度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        在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()执行速度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部