popen2モジュールを使ったサブプロセスの実行

サブプロセスを実行するコード(cmd_wrapper.py)を作成した。あるコマンドCMDNAMEを実行するとする。このコマンドはある複数の入力パラメータを読み込んで、その実行結果を標準出力に吐き出すもの。入力パラメータの最小限のものを引数で与えるようにし、次のように実行する。

% python cmd_wrapper.py XXX

ちゃんと動作することを確認した。
cmd_wrapper.pyは次の通り。
コードの中で、r,w,e=popen2.popen3(cmd)の部分は、(標準出力、標準入力、標準エラー出力)に対応しているみたい。

#!/usr/bin/env python

""" wrapper for program "cmd_name"
"""
import sys
import popen2

def execmd(cmd_name, lines, output):
    """ start sub-process """
    r, w, e = popen2.popen3(cmd_name)

    for x in lines:
        w.write(x)
        w.flush()

    head, ptr, wrap = 10, 0, 10
    while True:
        s = r.readline()
        if s == '':
            break
        if output:
            output.write(s)

if __name__ == "__main__":

    cmd_name = 'CMDNAME'
    output = '%s.log' % cmd_name

    val_dist = 0
    val_conf = 1

    lines = []
    lines.append("%s\n" % sys.argv[1])
    lines.append("%s\n" % val_dist)
    lines.append("%s\n" % val_conf)

    fd = open(output, 'w')
    execmd(cmd_name, lines, fd)