2011-08-31 8 views
6

私はWindows 7でPython 2.6を使用しています.CherryPy Webサーバー(バージョン3.1.2)を実行するPythonを起動するWindows .cmdファイルがあります。 Windows CMDシェルのプロンプトでこの.cmdファイルを実行してこの.cmdファイルを開始します。 CherryPyは、依存ファイルの1つが変更されたことに気づいたときに再起動します。そこCherryPyには、自分自身を再起動するために使用する呼び出しはコンソールから切り離さずに、WindowsのPythonでos.execv()を実行する方法は?

os.execv(sys.executable, args) 

あるので、Windows上でこの構成で発生する夫婦の問題は、ですが、あなたは.cmdのファイル上でPythonの実行可能ファイルを呼び出すことはできません。私は、様々なPythonの体操を通じてその問題を回避するために管理してきた、そして今私はそれが(基本的に)を呼び出して再起動するんだ

os.execv(sys.argv[0], args) 

しかし、再起動したプロセスは、キーボードから取り外されています。それは、Ctrlキーを押しながらCをキャッチします、そして私は

Terminate batch job (Y/N)? 

頼んだが、YまたはNIタイプが終了.cmdのファイルではないキャッチされていますが、Windows CMDシェルによって、それが

'Y' is not recognized as an internal or external command, operable program or batch file. 
を応答します

それでは、再起動したプロセスをUnixの "フォアグラウンド"と呼ぶようにWindowsで設定するにはどうしたらいいですか?

あなたはこの例のような方法

import subprocess 

retcode = subprocess.call(["ls", "-l"]) 

サブプロセスクラスの詳細については、このリンクを参照してくださいsubprocess.call使用することができます

+0

この質問を[リンク](のhttp:// stackoverflowの.com/questions/7004687/os-exec-on-windows)はこの質問のより単純なバージョンです。その質問に対する答えはこの回答に数えられますが、満足できる回答は得られていません。 –

+0

その質問に対する私の新しいコメントを見てください。 –

答えて

関連する問題