2016-09-26 11 views
2

を使用して、完全な標準出力を取得することはできません。私は正確な結果を得る。私は私の電子アプリからそれを実行したときに、私は、コンソール上で次の書き込み:は、私は私のアプリに次のコードを使用していますNode.jsの

[END] code 0 
[END] stdout " 
D:\Documents\Nauman Umer\New folder\electron-quick-start>"C:\Program Files (x86)\PC-BASIC\pcbasic.com" --load="ART.BAS" --convert=A 
" 
[END] stderr "" 

しかし、予想は以下のとおりです。

[END] code 0 
[END] stdout " 
D:\Documents\Nauman Umer\New folder\electron-quick-start>"C:\Program Files (x86)\PC-BASIC\pcbasic.com" --load="ART.BAS" --convert=A 
[FILE TEXT AS IN OUTPUT OF BAT] 
" 
[END] stderr "" 

私は、コマンドラインからではなく、アプリから直接pcbasicを実行しようとしましたが、結果同じです。

+1

あなたがstdoutにプログラムを印刷よろしいです。 Windows上のすべてのプログラムが標準出力に印刷されるわけではありません。いくつかはコンソールAPIを直接呼び出して出力を印刷します。 – slebetman

+0

はPythonプログラムで、 'sys.stdout.write()'を使ってコンソールに書き出します。 –

答えて

1

子プロセスがGetConsoleModeを使用してコンソールで実行されているかどうかを検出する場合は、コードの3行目にexec()ではなくspawn()を使用して呼び出してみてください。

child_process.exec()はコンソールを起動し、コンソール内でプログラムを起動するため、a.batで呼び出される子プロセスはコンソールを表示し、@slebetmanの示唆するようにコンソールAPIを使用することがあります。

child_process.spawn()は、プログラムを直接起動し、パイプを通じてstdoutを利用できるようにするため、コンソールには表示されないようにしてください(コンソールAPIは使用できません)。

詳細はこちらをご覧ください:https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

+0

私はこのコードを使用しています '' 'const spawn = require( 'child_process')。 constのLS =卵( "D:\\ドキュメント\\ナウマンUmer \\新しいフォルダ\\電子クイックスタート\\ PC-BASIC \\のa.bat"、[]); ls.stdout.on( 'データ'、(データ)=> { はconsole.log( 'STDOUT:$ {データ}'); })。 ls.stderr.on( 'データ'、(データ)=> { はconsole.log( 'stderrの:$ {データ}'); })。 ls.on( 'close'、(code)=> { console.log( '$ {code}'コードで終了した子プロセス); }); '' 'しかし、何かが得られるのは –

+0

です。 '' 'STDOUT: D:\ \ドキュメントナウマンUmer \新しいフォルダ\電子クイックスタート> "D:\ドキュメントナウマンUmer \新しいフォルダ\電子クイックスタートの\ PC-BASIC \ pcbasic.com \" - 子プロセスを= --convert -load = "ART.BASは、" コードで終了しました0''' –

関連する問題