問題タブ [stdout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# 内からネイティブ dll stdout/stderr をリダイレクトする
C# 内から stdout/stderr に出力するサードパーティのネイティブ dll の出力をリダイレクトしようとしています。stdout と stderr の両方の出力がログ ファイルに出力されます。
これが私の考えです(2つのストリームの場合はx2):
- AnonymousPipeServerStreamを作成する
- 経由でパイプのハンドルを取得します
_outServer.SafePipeHandle.DangerousGetHandle()
- P/Invoke を使用して、上記のハンドルでSetStdHandleを呼び出します
- サーバー ストリームに接続されたAnonymousPipeClientStreamを作成する
AnonymousPipeClientStream
から読み取り、ロガーに出力するループに入るスレッドを作成します。- 定期的に電話
flush
するAnonymousPipeServerStream
したがって、これはすべてうまく機能しているようです...私のコード内で。コントロールがネイティブ DLL に渡されるとすぐに、すべてが stderr に戻ります! 必要に応じて、ネイティブ DLL にデバッグして、何が問題なのかを確認できますが、実際にはそうしたくないので、ハンドルがどのように機能するかを理解するのに 10 時間を費やす前に、誰かアイデアをお持ちですか?
参考までに、テスト コードはhttp://pastebin.com/f3eda7c8にあります。興味深いのは、コンストラクターの 58 ~ 89 行目です。(もちろん、後でエラー処理などを追加します)。
warnings - 警告を STDERR または STDOUT に出力する必要がありますか?
定義済みのデータ セットを処理し、ファイルに出力するスクリプトを作成しています。1 つのデータ (アクセスしたすべてのセットで常に「通常」) が異なる場合に、この値が処理されていないことを示す警告をポップアップ表示したい (データにどのように影響するかわからないため)。この警告を stderr または stdout に出力する必要がありますか?
c++ - VCLはstdoutへのアプリケーション書き込みを形成します
私の会社には、ドキュメントオブジェクトモデルを備えた大規模なWindowsアプリケーションがあります。アプリケーションを開き、ファイルを開き、変更を加え、保存し、閉じます。GUIを上部から切り離して、いくつかのパラメーターを受け入れ、ファイルを開き、何か便利なことを行い、保存し、ファイルを閉じて、終了するコンソールアプリケーションを作成しようとしています。レガシーコードが大量にあるため、VCLフォームアプリケーションを使用して、コマンドライン(またはバッチスクリプト)から起動する必要があります。ステータスメッセージを書き出したり、「-version」や「-?」などのオプションに応答したりできるように、stdoutに出力できる必要があります。私はこのトピックについてグーグル検索をするのに朝中過ごしました、そして私は役に立つものを何も見つけませんでした。
このアプリケーションは、VCLを使用してCodeGear C ++Builder2007で記述されています。
python - Pythonのsys.stdoutを介したUnicode文字列の記述
しばらくの間、使用できないと仮定しますprint
(したがって、自動エンコーディング検出の利点を享受できます)。だからそれは私たちにを残しsys.stdout
ます。ただし、賢明なエンコーディングを行わないsys.stdout
ほど馬鹿げています。
ここで、Python wikiページのPrintFailsを読み、次のコードを試してみます。
ただし、これも機能しません(少なくともMacでは)。理由がわかりすぎます:
(UTF-8は端末が理解できるものです)。
したがって、上記のコードを次のように変更します。
これで、Unicode文字列が適切に送信さsys.stdout
れ、端末に適切に印刷されます(端末sys.stdout
に接続されています)。
これはUnicode文字列を書き込む正しい方法ですか、sys.stdout
それとも他のことをする必要がありますか?
編集:時々-たとえば、出力をless
-にパイプするとき-sys.stdout.encoding
になりますNone
。この場合、上記のコードは失敗します。
text - バイナリstdinおよびstdout
stdinで整数の改行で区切られたリストを読み取り、stdoutと同等のバイナリ(4バイト)を出力するユーティリティのペアを作成しようとしています。その逆も同様です。
私が最初に考えたのは、これを行う単純なbash / linuxコマンドでしたが、見つけることができませんでした。私の2番目の考えは、これをC ++で行うことでしたが、stdinまたはstdoutをバイナリストリームに変更する方法がわかりません。
これを行うための良い方法について何か考えはありますか?私は特定のプログラミング言語に公平です。
c - read()の後にgetchar()を使用する
キーボードキャプチャの場合はc。次のコードは、矢印キー/escが押されたときに検出されます。同時に、ユーザーが入力した単語全体を読みたいので、これらはstdoutにも表示されるはずです。
しかし、'\ n'を削除すると、このコードは機能しません。stdoutが通常のシェルとして動作するようにしたい。
java - すべてのコンソール出力を適切なエンコーディングでSwingJTextArea/ JTextPaneにリダイレクトするにはどうすればよいですか?
System.outPrintStreamをJTextPaneにリダイレクトしようとしています。これは、特別なロケール文字のエンコードを除いて、正常に機能します。私はそれに関する多くのドキュメントを見つけました(例えば、mindprodエンコーディングページを参照してください)が、私はまだそれと戦っています。同様の質問がStackOverFlowに投稿されましたが、私が見た限りでは、エンコーディングは対処されていませんでした。
最初の解決策:
2番目のソリューションはjava.nioを使用する必要があります。文字セットの使い方がわかりません。
どちらの解決策もうまくいきません。何か案が?
よろしくお願いします、jgran
perl - Win32 Perl のログ ファイルと画面に STDOUT と STDERR を送信できますか?
インターネットを検索したところ、STDOUT を 2 つの異なる場所に接続するための適切な解決策がいくつか見つかりました。ログファイルと画面を同時に表示します。一例を次に示します。
しかし、この解決策では、STDERR は画面のみに表示され、STDERR は画面と、STDOUT が記録されている同じログ ファイルの両方に表示されます。それは可能ですか?
私の仕事は、ビルド プロセスをログに記録することですが、通常どおり IDE の画面にも表示したいと考えています。また、エラー メッセージをログに記録することは、ハッピー メッセージをログに記録することと同じくらい重要です。また、エラーを別のログ ファイルに記録することは、適切な解決策ではありません。
process - solaris ですでに実行中のプロセスから stderr と stdout をキャプチャする
ユーザー「remedy」によって開始された、現在実行中のプロセス (arserverd) があります。このユーザーとしてログインできます。プロセスを再起動せずに stderr と stdout をキャプチャしたいと思います。これは可能ですか?
python - Pythonを使用して、別のプログラムの標準出力を強制的にバッファリング解除します
Pythonスクリプトは、Linux上の外部アプリケーションを制御し、パイプを介して外部アプリケーションstdinに入力を渡し、外部アプリケーションstdoutからパイプを介して出力を読み取ります。
問題は、パイプへの書き込みが行ではなくブロックによってバッファリングされるため、制御スクリプトが外部アプリケーションのprintfなどによって出力されたデータを受信する前に遅延が発生することです。
外部アプリケーションを変更して、明示的なfflush(0)呼び出しを追加することはできません。