問題タブ [mkfifo]

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 投票する
2 に答える
5821 参照

c - Cで名前付きパイプを介してファイルを送信するには?

サーバーとクライアントの2つのプログラムがあります。サーバーはファイルを読み取り、名前付きパイプを介してそのコンテンツをクライアントに送信する必要があります。しかし、私のサーバーはファイルから 2 文字しか読み取らず、終了します。このコードの何が問題になっていますか?

サーバー.c:

client.c:

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

c# - FIFO FILE への書き込み、Linux および Mono(C#)

タイトルに書いたことをやりたい。しかし、私は単にそれを理解することができません。私もすべてグーグルで検索しました。mkfifo によって作成された特殊なタイプの FIFO のファイルに文字列を書き込みたい (と思います)。これを行う方法について他に提案があれば、大歓迎です。

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

ruby - Ruby で名前付きパイプを作成する

Ruby 内に名前付きパイプを作成しようとしています。systemコマンド ( )を使用する以外system("mkfifo #{pipe_name}")に、これを可能にするネイティブの Ruby 関数はありますか?

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

python - fifo - ループで読む

プログラム間の簡単な通信にos.mkfifoを使用したい。ループ内の fifo からの読み取りに問題があります。

fifo を操作するリーダーとライターがいるこのおもちゃの例を考えてみましょう。リーダーをループで実行して、fifo に入るすべてのものを読み取れるようにしたいと考えています。

そして作家:

python reader.pyand laterを実行するとpython writer.py foo、「foo」が出力されますが、fifo は閉じられ、リーダーは終了します (またはwhileループ内でスピンします)。リーダーをループに留めておきたいので、ライターを何度も実行できます。

編集

このスニペットを使用して問題を処理します。

しかし、ファイルを繰り返し開くのではなく、もっとうまく処理する方法があるかもしれません...

関連している

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

c - mkfifo を使用して、書き込みまで読み取りをブロックする

パイプ mkfifo を使用しています。読み手と書き手がいます。

ファイルに何かがあるまでリーダーをブロックしてほしい。

非ブロック モード用の O_NONBLOCK を設定できるフラグがあります。したがって、デフォルトでは、読み取り時にブロックする必要があります。

ファイルへの書き込み

ファイルからの読み取り

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

python - PythonでFIFOが削除されたことを検出するにはどうすればよいですか

mkfifoPython では、次のようにして fifo (Linuxコマンドで作成) で着信データをポーリングできます。

ただし、データがない場合と、FIFO が削除された場合 (呼び出しread()による外部プログラムによって) の両方で、空の文字列が返されます。 聞いている fifo が存在しないことを確認する方法はありますか? remove()

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

python - 名前付きパイプ競合状態?

CとPythonの2つのプロセスがあります。C プロセスは、Python プロセスが読み取る名前付きパイプにデータを渡すのに時間を費やします。非常にシンプルで、1 秒に 1 回データ (現在は「2013 年 8 月 19 日月曜日 18:30:59」などのタイムスタンプ) を渡すと正常に動作します。

sleep(1) を削除すると問題が発生します。C プロセスのコマンド。1 秒の遅延もない場合、通信はすぐに台無しになります。Python プロセスは、バッファーが空であっても、複数のメッセージを読み取るか、データを読み取ったことを報告します。この時点で、C プロセスは通常爆撃します。

サンプル コードを投稿する前に、両側で何らかの同期を実装する必要があるかどうか疑問に思っています。fifo が空でない場合、C プロセスに fifo に書き込まないように指示するようなものでしょうか。

C プロセスは名前付きパイプを書き込み専用で開き、Python プロセスは読み取り専用で開きます。

両方のプロセスは、ループとして実行されることを意図しています。C プロセスは、USB ポート経由で受信したデータを継続的に読み取り、Python プロセスは各「メッセージ」を受け取り、それを解析してから SQL Db に送信します。

毎秒最大 50 件のメッセージを表示する場合、名前付きパイプはそのレベルのトランザクション レートを処理できますか? 各トランザクションのサイズは比較的小さい (20 バイト程度) ですが、その頻度から、共有メモリなどの他の形式のプロセス間通信を検討する必要があるのではないかと思います。

アドバイスをいただければ幸いです。必要に応じてコードを投稿できますが、現時点では、2 つのプロセス間で何らかの方法で同期する必要があるかどうか疑問に思っています。

ありがとう!