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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.19173 の関連記事表示

<< 0 >>
■19173  Re[4]: Processの標準出力をリアルタイム取得
□投稿者/ シャノン -(2008/05/20(Tue) 18:18:56)
    2008/05/20(Tue) 18:19:31 編集(投稿者)

    No19103 (れい さん) に返信
    > ■No19096 (シャノン さん) に返信
    >>これバグくさいなー。
    >
    > pingの、ですね。

    ping にバグがあるとして、その出力を扱うこっち側のアプリはどうしますか?
    ping は単一の改行のつもりで \r\n を書き出したところ、標準出力がテキストモードだったために \r\r\n になってしまうわけですが、Process.OutputDataReceived も Process.StandardOutput.ReadLine も、\r だけを有効な改行とみなすために、\r\r\n は2つの改行と認識されてしまうわけです。
    これを、「そんなのは ping のバグだから俺の責任じゃない! 知らん!」と言うか、\r\r\n は単一の改行と認識するようにプログラムを組むか。
    後者の場合、Process.StandardOutput.BaseStream からバイトデータとして読み取れば \r\r\n を受け取れるので処理できますが、Process.OutputDataReceived や Process.StandardOutput.ReadLine ではダメなんですよね(意図した空行かバグによる空行か判別できないため)。

    もちろん、ことは ping に限ったことではなく、行末が \r\r\n になってしまうコンソールアプリは少なくないことは想定できます。
記事No.19072 のレス /過去ログ37より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -