加入收藏 | 设为首页 | 会员中心 | 我要投稿 宣城站长网 (https://www.0563zz.cn/)- 数据湖、行业智能、边缘计算、开发、备份!
当前位置: 首页 > 站长资讯 > 评论 > 正文

执行命令的几种方式

发布时间:2021-03-24 13:12:23 所属栏目:评论 来源:互联网
导读:言用来执行一个系统的命令相对python来说还是有点复杂的,执行命令是一个非常常见的需求,如调用一个系统命令,启一个exe等,这里分为几种情况,之后统一总结一下。 只执行命令,不要输出结果 执行命令并且要获取到输出结果 阻塞和异步的执行 以下以ping www

言用来执行一个系统的命令相对python来说还是有点复杂的,执行命令是一个非常常见的需求,如调用一个系统命令,启一个exe等,这里分为几种情况,之后统一总结一下。

  1. 只执行命令,不要输出结果
  2. 执行命令并且要获取到输出结果
  3. 阻塞和异步的执行

以下以ping www.baidu.com 为例依次执行一下各种命令,主要使用标准库中的os/exec。

在执行命令的时候,我们主要使用的是os/exec包主的Cmd结构体方法,Cmd的结构体定义如下 Cmd结构体定义[1]。

主要的参数有但是我们一般不直接构造Cmd结构体,而是通过exec.Command() 函数返回一个Cmd结构体指针 如 exec.Command("ping","www.baidu.com") ping为命令,"www.baidu.com" 为参数,在得到*Cmd以后再使用结构体方法Run,Start等方法来真正的执行命令。

只执行命令,不要输出结果这里的输出结果只是表明命令执行了,但是它具体的输出我们不关心,在这种其实用的挺多的,我们只是想执行命令,在python里我们可以使用os.system() 函数来执行,当然这个是阻塞的执行。序什么也没有输出,但是停顿的一段时间后才退出。如果换成command.Start() 则程序运行起来以后马上就停止了。

如果想要获取到像python 那种 os.system的执行结果,其实这里的结果应该是ExitError,程序的退出码,应该怎么操作呢?这里exec包里有一个专门的结构体ExitError,使用它的一些方法可以获取到ExitCode,但是想要获取到ExitCode得到得到命令结束,也就是要阻塞的运行,上面使用Run() 方法可以阻塞等待执行结果,使用Start()方法以后,也可以使用Wait()方法来等待执行结束。

(编辑:宣城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读