問題タブ [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.

0 投票する
6 に答える
31835 参照

c - Cでfork()、pipe()、dup2()、exec()に問題がある

これが私のコードです:

(コードは、以下の2つの回答によって提案された変更を反映するように更新されましたが、それでも正常に機能しません...)

これが失敗するテストケースは次のとおりです。

問題は、その後シェルに戻る必要があることです。「シェル>」がさらに入力を待っているのが見えるはずです。また、「[4804] TERMINATED(Status:0)」(ただし、pidが異なる)のようなメッセージが表示されないことにも気付くでしょう。これは、2番目のプロセスが終了しなかったことを意味します。

これは機能するため、grepと関係があると思います。

2つの「終了」メッセージを簡単に確認できます...

だから、私のコードの何が問題になっていますか?

0 投票する
2 に答える
6538 参照

python - FIFO (名前付きパイプ) メッセージングの障害

単純なマルチプロセス メッセージングに Unix 名前付きパイプ (mkfifo) を使用する予定です。メッセージは 1 行のテキストです。

それを思いとどまらせてくれませんか?どのような障害が予想されますか?

私はこれらの制限に気付きました:

  1. メッセージが受信されるまで、送信者は続行できません。
  2. 受信者は、データが存在するまでブロックされます。読み取りを停止する必要がある場合は、ノンブロッキング IO が必要になります。たとえば、別のスレッドがそれを要求する可能性があります。
  3. 受信者は、1 回の読み取りで多くのメッセージを取得できます。これらは、終了する前に処理する必要があります。
  4. アトミック メッセージの最大長は 4096 バイトに制限されています。これは、Linux の PIPE_BUF 制限です (man 7 パイプを参照)。

メッセージングを Python で実装します。しかし、障害は一般的に保持されます。

0 投票する
9 に答える
6861 参照

bash - "> / dev / null 2>&1"のコマンドラインショートカットはありますか

プログラムの出力を見たくないときはいつでもこれを入力するのは本当に面倒です。もっと短い書き方があるかどうか知りたいです:

汎用シェルが最適ですが、他のシェル、特にbashやdashについても知っておくと便利です。

0 投票する
5 に答える
10018 参照

c - C でのこの複数のパイプ コードは理にかなっていますか?

私はこれについて数日かけて質問を作成しました。私の解決策は、受け入れられた回答で提案されたものです。しかし、私の友人は次の解決策を思いついた:

以下の回答の提案を反映するために、コードが数回更新されていることに注意してください (編集リビジョンを確認してください)。新しい回答をする場合は、問題の多い古いコードではなく、この新しいコードを念頭に置いてください。

これは、bash のようにパイプを介して一連のコマンドをシミュレートします。たとえば、次のようになります。cmd2 | ... | cmd_n. ご覧のとおり、コマンドは実際には引数から読み取られるため、「シミュレート」と言います。簡単なシェルプロンプトをコーディングする時間を割くために...

もちろん、エラー処理のように修正したり追加したりする問題がいくつかありますが、それはここでのポイントではありません。コードはある程度理解できたと思いますが、それでも、この全体がどのように機能するかについて多くの混乱を招きます。

私は何かが欠けているのでしょうか、それともこれは本当にうまくいき、問題を解決するためのきれいできれいな解決策ですか? そうでない場合、誰かがこのコードの重大な問題を指摘できますか?

0 投票する
1 に答える
5448 参照

java - Apache Commons-Exec からの大量の出力のキャプチャ

私は Java でビデオ アプリケーションを作成してffmpegおり、その出力を実行して標準出力にキャプチャしています。Java の の代わりに Apache Commons-Exec を使用することにしRuntimeました。ただし、すべての出力をキャプチャするのは困難です。

プロセス間通信の標準的な方法であるため、パイプを使用するのがよいと思いました。ただし、 and を使用した私のセットアップPipedInputStreamPipedOutputStream間違っています。動作しているように見えますが、ストリームの最初の 1042 バイトのみで、不思議なことにPipedInputStream.PIPE_SIZE.

私はパイプの使用にあまり関心がありませんが、データの速度と量 (解像度 512x384 の 1 分 20 秒のビデオでは 690Mのパイプ データが生成される) のために、(可能であれば) ディスク I/O の使用を避けたいと考えています。

パイプからの大量のデータを処理するための最適なソリューションについて考えていますか? 私の 2 つのクラスのコードは以下のとおりです。(はい、sleep悪いです。それについての考えは? wait()notifyAll()?)

WriteFrames.java

YUV4MPEGPipeParser.java

0 投票する
3 に答える
254 参照

pipe - パイプに非対称な動作があるのはなぜですか

ライターが存在しない場合にリーダーが存在しても問題ないのに、パイプにリーダーが存在しない場合にライターが存在しても問題ないのはなぜですか?

. リーダーは待機することを意図しているため、ライターがなくても大丈夫ですが、ライターはデータの準備ができており、データの準備ができていてもどれだけ待機する必要があるかわかりません。

. ライターのファイル記述子がリーダーによって悪用される可能性があるためですか(方法はわかりません)

0 投票する
4 に答える
3714 参照

process - ioctl()がブロックされないのはなぜですか?

ストリームを使用して、無関係のプロセス間でファイル記述子を渡すためのコードを作成しました。サーバーは、クライアントがファイル記述子を送信するのを待つ必要があります。サーバーコードは次のとおりです。

しかし、エラー番号9-不正なファイル記述子を受け取ります。

0 投票する
5 に答える
11758 参照

c++ - メインプロセスとスレッドの間でUnixパイプをどのように使用できますか?

シグナルがスレッドからメインプロセスに到着するたびに、パイプを介してデータをチャネリングしようとしています。

これは可能ですか?
これはどのように行うことができますか?


問題:

  1. 子スレッドはデータを読み取り、それをキューに入れます。
  2. メインアプリケーションは独自の処理を実行しますが、データがキューで利用可能になると、スレッドから通知を受け、データの処理を開始する必要があります(メインスレッドはキューにアクセスできます)。

このシナリオはどのように実装する必要がありますか?

0 投票する
1 に答える
664 参照

php - PHP正規表現のパイプに関する問題

HTMLコメントを自動的に処理するJoomlaのプラグインを書いています。{dropcap} B{/dropcap}そしてドロップキャップスタイルを作成します。

プラグインにパラメータを渡す方法が必要だったので、{dropcap} B | FF00FF | 00FF00{/dropcap}が最適な方法であると判断しました。

関数を作成しました:

'|'を使用する場合 文字スクリプトは機能しますが、パイプ文字が使用されるたびに個別のドロップキャップが作成されますが、別の区切り文字を使用する場合などです。':'スクリプトは正常に機能します。

パイプ文字は通常HTMLで使用されないため、プラグインの使用を拡張できるので、絶対に使用したいと思います。この奇妙な動作を停止する方法はありますか?