C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DOSコマンドを実行し出力データを取得する


(過去ログ 131 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■77675 / inTopicNo.1)  DOSコマンドを実行し出力データを取得する
  
□投稿者/ むむ (5回)-(2015/11/15(Sun) 16:10:03)

分類:[C#] 

2015/11/15(Sun) 16:14:53 編集(投稿者)

VisualStudio2015 C# Win7 32bit

お世話になります。

「DOSコマンドを実行し出力データを取得する」
http://dobon.net/vb/dotnet/process/standardoutput.html

上記サイトの「非同期で出力データを取得する」のサンプルソースを元に、コンソールアプリの出力を試しています。


まず、以下のバッチをコンソール上で実行した場合、

(Bat)-----------------------------
echo off
ping localhost
pause

ping localhost
pause
-----------------------------

(出力結果)-----------------------------
homework [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

::1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
続行するには何かキーを押してください . . .
-----------------------------

となります。
これをサイトのサンプルソースで実行した場合

(出力結果)-----------------------------
homework [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

::1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
-----------------------------

となり、最後の行にpause命令によるキー入力を促すメッセージが表示されません。

この状態からEnterキーを送ってやる(sw.Write('\r'))と
「続行するには何かキーを押してください . . .」が表示され、
次の処理へと移っていきます。


なぜ、このように1行分が遅れて出力されるのでしょうか。
この遅れを解決する方法は有りますでしょうか。


以上、よろしくお願いしますm(__)m


引用返信 編集キー/
■77678 / inTopicNo.2)  Re[1]: DOSコマンドを実行し出力データを取得する
□投稿者/ ニートプログラマ (1回)-(2015/11/15(Sun) 21:57:04)
ReadLine だからとしか・・・・。起動したプログラムが標準出力に改行を
送ったら、そのタイミングで改行まで渡してくるからです。
「仕様」ですから対処はできません。

それからお行儀良く標準入出力を使ってくれているプログラムならいいので
すがコンソールに直接書き込むお行儀が悪いプログラムでは期待したように
は動きません。
引用返信 編集キー/
■77679 / inTopicNo.3)  Re[2]: DOSコマンドを実行し出力データを取得する
□投稿者/ むむ (7回)-(2015/11/16(Mon) 11:12:19)
ニートプログラマ 様

ご回答、ありがとうございます。

なるほど、pauseすると
「続行するには何かキーを押してください . . .」
の直後にカレットがあり、改行されてないですね。

どうしようもないので、pause前にechoでメッセージを表示してもらうよう、
制限事項にします。

ありがとうございましたm(__)m

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -