問題タブ [pipe]
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.
amazon-web-services - アマゾン ウェブ サービス - ウィッシュリストの取得
ウィッシュリストを取得するために、Yahoo Pipes とAmazon Product Advertising API (以前の ECS) SDKをいじっています。
問題は、ウィッシュリストのすべてのアイテムを問題なく取得できますが、削除したアイテムも含まれているように見えることです。
他の誰かがこの API を使用して、これに気付きましたか? それを回避する方法はありますか?
アップデート:
コメントで追加情報をリクエストしました...
ウィッシュリストの XML を取得するために使用する URL は次のとおりです。
XML 応答の関連部分は次のとおりです。
XML の残りの部分は、そのようなリスト アイテムか、応答の先頭にある要求に関する情報です。
c - パイプの読み取り側が現在ブロックされているかどうかを調べる
子プロセスがユーザー入力を待っているかどうかを調べようとしています (出力を解析せずに)。Unix の C で、パイプの読み取り側に現在 read() 呼び出しがブロックされているかどうかを判断することは可能ですか?
問題は、子プロセスで実行されるプログラムを制御できないことです。それらは、私が通常 /dev/null にリダイレクトしたいあらゆる種類の冗長なガベージを出力します。時折、ユーザーに何かを求めるプロンプトが表示されます。(プロンプトには信頼できる形式がありません。)したがって、私の考えは次のとおりです。
- ループ内:
- 子の stdout を排出し、一時バッファに追加します。
- 子がユーザー入力を求めているかどうかを確認します (方法はわかりません)。その場合、バッファーは標準出力に出力されます。
- 子が終了したら、バッファを破棄します。
c# - .NET アプリケーションのリダイレクトされたコンソール出力で閉じたパイプを検出する
.NETConsole
クラスとそのデフォルトのTextWriter
実装 (Console.Out
例 として暗黙的に利用可能Console.WriteLine()
) は、アプリケーションがその出力を別のプログラムにパイプしているときにエラーを通知せず、アプリケーションが終了する前に別のプログラムがパイプを終了または閉じます。これは、アプリケーションが必要以上に長く実行され、出力がブラック ホールに書き込まれる可能性があることを意味します。
リダイレクト パイプのもう一方の端が閉じていることを検出するにはどうすればよいですか?
より詳細な説明は次のとおりです。
この問題を示すサンプル プログラムのペアを次に示します。Produce
計算の効果をシミュレートするために、かなりゆっくりと多くの整数を出力します。
Consume
入力の最初の 10 行のみを読み取り、終了します。
これら 2 つのプログラムがコンパイルされ、最初の出力が 2 番目のプログラムにパイプされた場合、次のようになります。
Produce
... が終了した後もずっと実行し続けることが観察できConsume
ます。
実際には、私のConsume
プログラムは Unix スタイルhead
であり、私のProduce
プログラムは計算にコストのかかるデータを出力します。パイプのもう一方の端が接続を閉じたときに出力を終了したいと思います。
.NET でこれを行うにはどうすればよいですか?
(明らかな代替手段は、コマンドライン引数を渡して出力を制限することであることを知っています。実際、それは私が現在行っていることですが、もっと多くのことをできるようにしたいので、これを行う方法を知りたいですいつ読み取りを終了するかについての構成可能な判断 (例:grep
前にパイプを通すhead
)。
更新: .NETの実装は、エラー 0x6D ( ) および 0xE8 ( )System.IO.__ConsoleStream
を無視するようにハードコードされているようです。これはおそらく、コンソール ストリームを再実装する必要があることを意味します。はぁ...)ERROR_BROKEN_PIPE
ERROR_NO_DATA
linux - C の壊れたパイプ -- pipe()、fork()、exec() プログラム
簡単なプログラムを書く必要があります: 親といくつかのプログラム [子] (execl
親で開始) があります。子供たちは次のように互いに通信します。子供 I は親番号 J に送信し、親はメッセージ (「あなたにメッセージがあります」など) を J に送信し、J は親番号 K に送信します。
そして問題があります-私のプログラム(strace
コマンドでテスト済み)が子にメッセージを送信しようとすると、壊れたパイプエラーが発生します。
誰かがコードを調べて、何が問題なのか教えてくれたら幸いです。
コードは次のとおりです。
java - Java コードで PipedInputStream / PipedOutputStream を使用しないのはなぜですか?
私は最近、このイディオムを発見しました。何か足りないものはないかと考えています。使っているのを見たことがない。私が実際に扱ったほぼすべての Java コードは、次の例のようなものではなく、データを文字列またはバッファーに丸呑みすることを好みます (たとえば、HttpClient および XML API を使用)。
このコードは、Unix パイピング スタイルの手法を使用して、XML データの複数のコピーがメモリに保持されるのを防ぎます。HTTP Post 出力ストリームと DOM Load/Save API を使用して、XML ドキュメントを HTTP リクエストのコンテンツとしてシリアライズします。私が知る限り、余分なコードをほとんど使わずにメモリの使用を最小限に抑えます ( Runnable
、PipedInputStream
、およびの数行のみPipedOutputStream
)。
では、この慣用句の何が問題になっているのでしょうか。このイディオムに問題がなければ、なぜ私はそれを見なかったのですか?
編集:どこにでも表示されるボイラープレートのバッファーごとのコピーを明確にPipedInputStream
し、置き換えます。また、処理されたデータを書き出すと同時に受信データを処理することもできます。PipedOutputStream
OS パイプを使用しません。
visual-studio - Visual Studio ビルド イベントのパイプ
Visual Studio 2005 Express Edition SP1 を使用しています。
あるプログラムを呼び出して、その出力を別のプログラムに送信する必要があるリンク前イベントがあります。
このコマンドは、コマンド ラインまたはバッチ ファイルから呼び出すと、期待どおりに機能します。コマンドは、リンク前イベントから呼び出されると失敗します (リンク前イベントがコマンドを含む別のバッチ ファイルを呼び出す場合でも)。「foo」が実行され、Visual Studio に表示される出力が生成されますが、この出力は「bar」に送られず、実際には「bar」がまったく呼び出されないように見えます。Pre-Link Event が CMD または NMAKE を呼び出し、それが次にパイプされたコマンドを呼び出す場合でも、'foo' だけが実行されます。
Visual Studio は壊れていますか、また、これを機能させるために実行できる難解な儀式はありますか?
perl - OOスタイルでパイプを開くにはどうすればよいですか?
古いコードを次のように新しいスタイルで書き直します。
ファイルは大丈夫ですが、パイプを開く方法がわかりません。
OOスタイルIOでパイプを処理する方法は?
追加:
ジョナサンに感謝します、それは大丈夫です。
perl - selectを使用せずに、PerlでパイプされたデータのSTDINをチェック(ピーク)するにはどうすればよいですか?
引数もパイプされたデータも Perl スクリプトに渡されない可能性を処理しようとしています。引数がない場合、入力はSTDIN経由でパイプされていると想定しています。ただし、ユーザーが引数を指定せず、スクリプトに何もパイプしない場合、キーボード入力を取得しようとします。私の目的は、代わりにエラー メッセージを提供することです。
残念ながら、select()
一部の非 POSIX システムには移植できません。移植性を最大限に高めてこれを行う別の方法はありますか?
syntax - オブジェクト コンストラクターで F# パイプ記号を使用する
オブジェクトの作成にパイプ演算子 |> を使用するための正しい構文を見つけようとしています。現在、静的メンバーを使用してオブジェクトを作成し、それにパイプするだけです。こちらが簡易版です。
私がしたいこと ...
このようなことは可能ですか?静的メンバーの作成でコンストラクターを繰り返してコードを複製したくありません。
Update コンストラクターは、F# 4.0 のファースト クラスの関数です。
F# 4.0 の正しい構文は次のとおりです。