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)