如何调用外部命令?
如何调用外部命令?
各种方法及各自的优缺点如下:
os 库
system 函数
对于运行简单的 Shell 命令而不去调用外部程序来说是非常好用的:
把命令和参数传递给你系统的 Shell 中。
用这个命令的好处在于你可以一次运行好多命令,还可以设置管道来进行重定向等。但是,这要求你手动输入空格等 Shell 字符。
popen 函数
和 os.stream
差不多,但是它提供了一个链接标准输入/输出的管道,还有其他 3 个 popen
可以调用。可以传递字符串,也可以传递列表,列表就不用担心溢出字符了(escaping characters
subprocess 库
Popen 管道
这个 Popen
是打算用来替代 os.popen
方法的,有点复杂:
而使用 os.popen
:
它的最大优点就是一个类代替了原来 4 个不同的 popen
call 方法
基本用法和 Popen 类参数一致,但是它会等待命令结束后才会返回程序
总结
OS 模块里也有 C 语言里的
fork/exec/spawn
方法,但是不建议直接使用需要注意传递到 shell 命令一定要注意参数的安全性
如果传入 go die && rm -rf /
会如何。。。
Last updated
Was this helpful?