サブプロセス呼び出しからgnuscreenでサーバーデーモンを実行しようとしましたが、起動しませんでした
subprocess.call(["screen", "-dmS test ./server"])
実行中の画面には端末が必要だと言われたので、単純に呼び出しで実行できないのはそのためです。これを行うためのコードをいくつか見せていただけますか?
サブプロセス呼び出しからgnuscreenでサーバーデーモンを実行しようとしましたが、起動しませんでした
subprocess.call(["screen", "-dmS test ./server"])
実行中の画面には端末が必要だと言われたので、単純に呼び出しで実行できないのはそのためです。これを行うためのコードをいくつか見せていただけますか?
試す
subprocess.call( ["screen", "-d", "-m", "-S", "test", "./server"] )
引数文字列を個別の引数 (文字列ごとに 1 つ) に分割する必要があります。
subprocess
ドキュメントからの関連する引用は次のとおりです。
UNIX の場合、shell=False (デフォルト): この場合、Popen クラスは os.execvp() を使用して子プログラムを実行します。args は通常、シーケンスでなければなりません。文字列は、その文字列を唯一の項目 (実行するプログラム) とするシーケンスとして扱われます。
UNIX の場合、shell=True の場合: args が文字列の場合、シェルを介して実行するコマンド文字列を指定します。args がシーケンスの場合、最初の項目はコマンド文字列を指定し、追加の項目は追加のシェル引数として扱われます。
したがって、デフォルトでは、引数は指定したとおりに使用されます。文字列を複数の引数に解析しようとはしません。に設定shell
した場合true
は、次のことを試すことができます。
subprocess.call("screen -dmS test ./server", shell=True)
文字列はコマンドラインとまったく同じように解析されます。