国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 創建子進程模塊subprocess詳解

2020-02-23 00:35:08
字體:
來源:轉載
供稿:網友

最近,我們老大要我寫一個守護者程序,對服務器進程進行守護。如果服務器不幸掛掉了,守護者能即時的重啟應用程序。上網Google了一下,發現Python有很幾個模塊都可以創建進程。最終我選擇使用subprocess模塊,因為在Python手冊中有這樣一段話:

  This module intends to replace several other, older modules and functions, such as: os.system、os.spawn*、os.popen*、popen2.*、commands.*

  subprocess被用來替換一些老的模塊和函數,如:os.system、os.spawn*、os.popen*、popen2.*、commands.*。可見,subprocess是被推薦使用的模塊。

下面是一個很簡單的例子,創建一個新進程,執行app1.exe,傳入相當的參數,并打印出進程的返回值:
代碼如下:
import subprocess

returnCode = subprocess.call('app1.exe -a -b -c -d')
print 'returncode:', returnCode

#----- 結果 --------
#Python is powerful
#app1.exe
#-a
#-b
#-c
#-d
returncode: 0

app1.exe是一個非常簡單的控制臺程序,它只打印出傳入的參數,代碼如下:
代碼如下:
#include <iostream>
using namespace std;

int main(int argc, const char *argv[])
{
    cout << "Python is powerful" << endl;
    for (int i = 0; i < argc; i++)
    {
        cout << argv[i] << endl;
    }

    return 0;
}

 閑話少說,下面開始詳細介紹subprocess模塊。subprocess模塊中只定義了一個類: Popen。可以使用Popen來創建進程,并與進程進行復雜的交互。它的構造函數如下:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)

  參數args可以是字符串或者序列類型(如:list,元組),用于指定進程的可執行文件及其參數。如果是序列類型,第一個元素通常是可執行文件的路徑。我們也可以顯式的使用executeable參數來指定可執行文件的路徑。在windows操作系統上,Popen通過調用CreateProcess()來創建子進程,CreateProcess接收一個字符串參數,如果args是序列類型,系統將會通過list2cmdline()函數將序列類型轉換為字符串。
  參數bufsize:指定緩沖。我到現在還不清楚這個參數的具體含義,望各個大牛指點。
  參數executable用于指定可執行程序。一般情況下我們通過args參數來設置所要運行的程序。如果將參數shell設為True,executable將指定程序使用的shell。在windows平臺下,默認的shell由COMSPEC環境變量來指定。
  參數stdin, stdout, stderr分別表示程序的標準輸入、輸出、錯誤句柄。他們可以是PIPE,文件描述符或文件對象,也可以設置為None,表示從父進程繼承。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰城市| 龙州县| 平和县| 东乌珠穆沁旗| 西华县| 博兴县| 华阴市| 比如县| 阿拉尔市| 鄂尔多斯市| 通辽市| 台南县| 临沧市| 聂荣县| 莒南县| 普兰店市| 游戏| 巴青县| 宣武区| 邵阳县| 徐汇区| 陆河县| 威海市| 达尔| 淳安县| 延津县| 邵阳市| 申扎县| 四平市| 斗六市| 揭东县| 磐安县| 搜索| 绩溪县| 行唐县| 邛崃市| 松桃| 出国| 黎平县| 枝江市| 犍为县|