私は Python (2.7) モジュールを開発しています。これにより、ユーザーはローカルでコマンドを実行したり、ジョブを負荷分散機能 (LSF のように自家栽培) に送信したりできます。この状況では、ユーザーが次のようにコマンドを送信できるようにしたいと考えています。
cmd = 'convert_something.tcl some_file >! output_file'
これにより、スクリプト (Tcl、Perl、Python、C/C++) の変換が容易になります。(将来的には変更されると思いますが、今のところ...) subprocess.Popen() コマンドは次のようになります。
args = cmd.split()
p = subprocess.Popen(args, shell=True)
しかし、Popen の引数をいくらいじっても、リダイレクトを機能させることができません。私は現在 tcsh シェルで作業していますが、bash も試しました。次のように、シェルを指定してみました。
p = subprocess.Popen(args, executable='/bin/bash', pre_exec=oc.setsid)
しかし、実行中のプログラムからエラーが発生することが予想されます。ドキュメントを読み直して検索しましたが、うまくいきませんでした。
以前にこれを行ったことを思い出したので(そしてうまくいきました)、明らかな何かが欠けているに違いありません。任意の提案をいただければ幸いです。