2016-10-27 7 views
1

私はこのようなexecSyncを使用してノード内からPythonスクリプトを実行している:そのようなデバイスまたはアドレス:「は/ dev/stdoutを」

execSync('python myScript.py -o "/dev/stdout"'); 

は私のスクリプトがで-oで指定したファイルに結果を送信しませんこの場合/dev/stdout

は、私は、エラーメッセージ ": 'は/ dev/stdoutを'ないようなデバイスまたはアドレス" を取得します。

端末から手動でコマンドを実行すると、正常に動作しますが、ノード経由で起動した場合は正常に動作しません。

私はUbuntu 12.04を使用しています。

+0

それは、ファイル名の文字通り一部として引用符を解釈されていますを使用する方法について説明しますか?二重引用符を削除してみてください。 –

+0

@JohnGordon私は引用符なしで試しました – Drahcir

+0

この[スレッド](http://unix.stackexchange.com/q/36403/134816)は役に立ちます。 – CAB

答えて

1

端末でコマンドを実行すると、/dev/stdoutは端末stdoutにリダイレクトされます。 execSyncでpythonプロセスを起動すると、stdoutのリダイレクト先はありません。

あなたはさらにexecsyncページダウンビットを読めば、それはchild process' stdout

+0

あなたの答えをありがとうが、それは問題を解決しません。私はこれをすでに読んでいました。子プロセスの標準出力からの出力を親プロセスに転送する方法について説明しています。 – Drahcir

+1

@Drahcirクリアするには、親が読むことができるパイプを作成します。この例では、パイプから読み取ったデータを直接ファイルにリダイレクトするため、コードを記述する必要はありません。あなたは、それを親のstdoutとなる 'sys.stdout'に送ることを含め、その出力で何かをすることができます。問題は、その出力をどこに欲しいのですか? – CAB

+0

私はこれをしたい: 'JSON.parse(execSync( 'python ... etc'))' – Drahcir

関連する問題