問題タブ [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.
python - Python の subprocess.Popen は、同じ stdout を返すべきではありませんが、返します
Python の subprocess.Popen で非常に奇妙な問題が発生しています。私はそれを使用して外部exeを数回呼び出し、出力をリストに保持しています。
この外部 exe を呼び出すたびに、異なる文字列が返されます。ただし、Popen を使用して何度か呼び出すと、常にSAME string が返されます。=:-O
exeをリコールせずに、Popenがstdoutから常に同じ値を返しているようです。実際にexeを再度呼び出さずに、ある種のキャッシュを実行している可能性があります。
これは私のコードです:
いったい私は何を間違っているのでしょうか?!
shell - エラーとしての警告をエミュレートするシェルスクリプト?
一部のコンパイラでは、警告をエラーとして設定できます。これにより、コンパイラの警告を残さないようにすることができます。これを行うと、コードがビルドされないためです。これは良いことです。
残念ながら、一部のコンパイラにはwarnings-as-errors のフラグがありません。
この機能を提供するシェル スクリプトまたはラッパーを作成する必要があります。
おそらく、コンパイル コンソールの出力を解析し、コンパイラの警告 (またはエラー) があった場合は失敗を返し、それ以外の場合は成功を返します。「失敗」とは、オブジェクト コードを生成してはならない (と私は思う) ことも意味します。
上記の明示的な要件と、それ以外の場合はコンパイラと同じように動作するという次の暗黙の要件を満たす、記述できる最も短くて単純な UNIX/Linux シェル スクリプトは何ですか: - すべてのフラグ、オプション、引数を受け入れます - stdout と stderr のリダイレクトをサポートします- 指示どおりにオブジェクト コードとリンクを作成する
キーワード: エレガントで、すべての要件を満たしています。
おまけ: GNU make ファイルに簡単に組み込むことができます。
ご協力いただきありがとうございます。
=== 手がかり === 別の問題に対するこの解決策は、シェル関数 (?) を使用して bash の stderr リダイレクトにテキストを追加することで解決される可能性があります。私の質問?
===回答状況===
簡潔な回答をしてくれたCharlie Martinに感謝しますが、残念ながら、それは私が始めたものです。しばらく前にそれを使用し、オフィスで使用するためにリリースしましたが、数時間以内に最も重大な欠点が指摘されました。警告なしでコンパイルに合格しますが、エラーのみです。コンパイラが動作しないことが確実なオブジェクト コードを提供することになるため、これは非常に悪いことです。単純なソリューションは、リストされている他の要件も満たしていません。
Adam Rosenfieldの略記と、pipefailをソリューションに導入してくれたChris Doddに感謝します。Chris の答えは最も近いように見えます。パイプフェイルは、コンパイルが実際にエラーで失敗した場合に、必要に応じて失敗することを保証する必要があると思うからです。クリス、pipefail はすべてのシェルで機能しますか? 上記の暗黙の要件の残りについて何か考えはありますか?
.net - 標準出力をキャプチャし、コンソール ウィンドウに表示する
表示されているコンソール ウィンドウ (MSBuild を実行するバッチ ファイル) で実行される子プロセスを生成しています。プロセスによって生成された出力を表示されているコンソール ウィンドウに表示し、その出力をキャプチャしたいと考えています。コードで処理できるようにします。他のいくつかの質問と ProcessStartInfo.RedirectStandardOutput などを扱う MSDN ドキュメントを読みましたが、リダイレクトされたストリームからの出力をキャプチャして、コードで問題なく処理できます。
問題は、出力が子プロセスのコンソール ウィンドウに表示されないことです。プロセスの実行中に画面に空白のコンソール ウィンドウが表示され、プロセスが終了すると消えます。
実際の子プロセス ウィンドウを非表示にして、2 つ目のウィンドウを表示して、キャプチャした出力を単純に書き込むことができると思いますが、それは必要以上の作業のように思えます。出力をコンソール ウィンドウに表示し、完了時に処理のためにキャプチャする方法はありますか?
background - CTRL + Zを壊して実行した後、プロセスをバックグラウンドにするにはどうすればよいですか?
Ctrl + Zなどの一部のキーが機能しなくなったため、この質問は特別です。
次の順序で入力して、プロセスをバックグラウンドにしようとしました。
- 探す /
- CTRL + Z
- bg
しかし、私はまだstdoutを見ることができます。最初のステップのみを実行することとの唯一の違いは、コマンドCTRL+Zが機能しなくなることです。保存されていないジョブがあり、ハードドライブが100GBを超えている場合は、かなり厄介です。それで
プロセスをバックグラウンドにするにはどうすればよいですか?
[詳細]
MacでBashの4番目のバージョンを使用しています。
[ニコラス・ライリーによる核心の返事]
問題は、実行中のプロセスのバックグラウンドの「影響」を理解していないことです。CTRL+Zなどのコマンドがバックグラウンドプロセスで機能しない理由がわかりません。次のコマンドを使用して、別のシェルでプロセスを強制終了することができました。
batch-file - Windowsコマンドプロンプト出力を表示し、ファイルにリダイレクトする
Windowsコマンドプロンプトでコマンドラインアプリケーションを実行し、出力を表示すると同時にファイルにリダイレクトするにはどうすればよいですか?
たとえば、コマンドを実行すると、結果を表示せずにdir > test.txt
呼び出されたファイルに出力がリダイレクトされますtest.txt
。
How could I write a command to display the output and redirect output to a file in the Windows command prompt, similar to the tee
command on Unix?
python - サブプロセスから「リアルタイム」情報を取得するにはどうすればよいですか。Python(2.5)のPopen
サブプロセスモジュールを次のように使用したいと思います。
- 実行に時間がかかる可能性のある新しいプロセスを作成します。
- キャプチャ
stdout
(またはstderr
、あるいは両方、一緒にまたは別々に) - サブプロセスからのデータを受信時に処理します。おそらく、受信したすべての行でイベントを発生させるか(wxPythonなど)、または単に今のところそれらを出力します。
Popenを使用してプロセスを作成しましたが、communicate()を使用すると、プロセスが終了すると、データが一度に届きます。
(を使用して)ブロッキングを行う別のスレッドを作成するとreadline()
、プロセスが終了するまで、このメソッドでも行を取得できません。(bufsizeとして何を設定しても)myprocess.stdout
stdout = subprocess.PIPE
恐ろしくなく、複数のプラットフォームでうまく機能するこれに対処する方法はありますか?
bash - 標準出力と標準エラーの両方を Bash でファイルにリダイレクトして追加する方法
標準出力を Bash の切り捨てられたファイルにリダイレクトするには、次を使用することを知っています。
Bashで標準出力をリダイレクトしてファイルに追加するには、次を使用することを知っています。
標準出力と標準エラーの両方を切り詰められたファイルにリダイレクトするには、次を使用することを知っています。
ファイルに追加する標準出力と標準エラーの両方をリダイレクトするにはどうすればよいですか? cmd &>> file.txt
私にはうまくいきませんでした。
c - 標準入力から読み取るCで矢印キーを無視するには?
read() システム コールを使用して標準入力から読み込んでいますが、ちょっと気になる点があります。矢印キーを使用できません...私が本当にやりたかったのは、矢印キーを使用して入力したテキスト内を前後に移動することでしたが、それはそれほど簡単ではないと思います...だから、少なくともやりたいこと、それらを無視することです。
現在、矢印キーのいずれかを押すと奇妙な出力が生成され、標準出力に何も書き込まれないようにしたい (その結果、read() システム コールで標準入力から読み取られる)。
これは簡単に達成できますか、それともそれほど簡単ではありませんか?
c++ - cout ストリームの制限?
私を襲ったパズル。いくつかの単純なテスト ハーネス コードで、標準出力にストリームする文字が多すぎると、プログラムが失敗します。奇妙ですが、非常に再現性があります。これは Windows のみの問題かもしれませんが、簡単に確認できます。
前のコードは、stdin から char のストリームをロードし、それらを逆の順序で出力するだけです。100K 程度の文字までは問題なく動作しますが、それより大きいファイルの場合、Windows で「stdout の書き込みエラー」メッセージが表示されて停止します。いつも同じキャラで死ぬ。問題を再現するために必要なのは、「cat bigfile.txt | reverse.exe」のようなシェル コマンドだけです。MSFT コンパイラと Intel コンパイラはどちらも同様に動作します。
stdout にバッファがある可能性があることは認識していますが、いっぱいになったときに自動的にフラッシュされるべきではありませんか?