2017-04-24 280 views
1

PyApplleryyy.exeから作成された実行可能ファイルを生成するElectronアプリxxx.exeがあります。 yyy.exeでは、subprocess.check_output()経由でgit cmdを起動しようとしています。 悲しいことに、check_output()への呼び出しは[WinError 6] The handle is invalidをスローします。WinError 6:python check_outputからハンドルが無効です。電子アプリケーション

yyy.exeがコマンドラインで直接起動された場合、すべて正常に動作しています。 問題はWindowsでのみ発生しています。私の前提は、stdinにいくつかのチェックがあり、電子アプリを通して実行してもStdinが提供されないためです。

ヒントがあれば幸いです!前もって感謝します!

+0

おかげで、私が試した後、このパスに沿って、さらに取得していない 'STDIN = subprocess.DEVNULL'失敗した...あなたが得ることができるので、 –

+0

@eryksunあなたの答えを入れてください褒賞! :) –

答えて

1

Windowsでは、subprocess.Popenはゼロ以外の標準ハンドルを複製しようとします。無効な場合は失敗します。 stdinstderrをNULにリダイレクトできます。たとえば、次のように

import os 

try: 
    from subprocess import DEVNULL 
except ImportError: 
    DEVNULL = os.open(os.devnull, os.O_RDWR) 

output = subprocess.check_output(cmd, stdin=DEVNULL, stderr=DEVNULL) 
代替のために多く
関連する問題