python如何与linux交互?

时间:2016-07-12 21:46:48

标签: python linux shell ubuntu terminal

我使用commands.getstatusoutput('some_terminal_command')将某个终端命令的输出存储在变量中。但我很想知道python如何从终端获得输出? python有“Shell”的某些部分吗?

2 个答案:

答案 0 :(得分:5)

最终,您对运行命令的调用使用fork and exec系统调用。这些是操作系统提供的功能,并且暴露给大多数编程语言,允许语言启动新进程并获得其输出。它是许多现代操作系统的基本构建块之一。

请注意,并非所有操作系统都有fork-exec,但如果他们不熟悉,他们将拥有某种系统提供的启动进程的功能。这是使用高级语言的好处之一:它隐藏了跨平台API背后的特定于平台的功能。

答案 1 :(得分:1)

如果您read the source,您会看到它使用os.popen来电。然而,有趣的是os.popen模块中没有定义os.py

最终和some help我找到了posixmodule source,它验证了python与Linux交互的方式,至少在定义PYCC_GCC时,是通过{{ 1}}功能。根据{{​​1}},这意味着:

  

popen()函数通过创建管道,分叉和调用shell来打开一个进程。

如果你仔细阅读这个模块,你会发现该模块为不同的操作系统(如OSX,NT等)定义了一些其他方法。