當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python os.spawnl用法及代碼示例


用法:

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

在新進程中執行程序path

(請注意,subprocess 模塊為生成新進程和檢索其結果提供了更強大的工具;使用該模塊比使用這些函數更可取。特別檢查用子進程模塊替換舊函數部分。)

如果 modeP_NOWAIT ,該函數返回新進程的進程id;如果 modeP_WAIT ,如果進程正常退出,則返回進程的退出代碼,或者 -signal ,其中 signal 是殺死進程的信號。在 Windows 上,進程 ID 實際上是進程句柄,因此可以與 waitpid() 函數一起使用。

注意VxWorks 當新進程被殺死時,這個函數不會返回-signal。相反,它會引發 OSError 異常。

spawn* 函數的 “l” and “v” 變體在 命令行 參數的傳遞方式上有所不同。如果在編寫代碼時參數的數量是固定的,那麽“l” 變體可能是最容易使用的;單個參數隻是成為spawnl*() 函數的附加參數。當參數的數量可變時,“v” 變體很好,參數作為 args 參數在列表或元組中傳遞。在任何一種情況下,子進程的參數都必須以正在運行的命令的名稱開頭。

在結尾處包含第二個 “p” 的變體(spawnlp(),spawnlpe(),spawnvp(), 和spawnvpe()) 將使用PATH用於定位程序的環境變量file.當環境被替換時(使用其中一種os.spawnl變體,在下一段中討論),新環境被用作PATH多變的。其他變種,os.spawnl,spawnle(),spawnv(), 和spawnve(), 不會使用PATH用於定位可執行文件的變量;path必須包含適當的絕對或相對路徑。

對於spawnle()spawnlpe()spawnve()spawnvpe()(注意這些都以“e”結尾),env參數必須是一個映射,用於定義新進程的環境變量(它們被用來代替當前進程的環境); spawnl()spawnlp()spawnv()spawnvp()函數都會使新進程繼承當前進程的環境。注意env字典中的鍵和值必須是字符串;無效的鍵或值將導致函數失敗,返回值為 127

例如,以下對 spawnlp()spawnvpe() 的調用是等效的:

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

使用參數 modepathargsenv 引發審計事件 os.spawn

可用性:Unix、Windows。 spawnlp()spawnlpe()spawnvp()spawnvpe() 在 Windows 上不可用。 spawnle()spawnve() 在 Windows 上不是線程安全的;我們建議您改用subprocess 模塊。

在 3.6 版中更改:接受一個path-like 對象.

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 os.spawnl。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。