問題タブ [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.
c - Cで名前付きパイプを介してファイルを送信するには?
サーバーとクライアントの2つのプログラムがあります。サーバーはファイルを読み取り、名前付きパイプを介してそのコンテンツをクライアントに送信する必要があります。しかし、私のサーバーはファイルから 2 文字しか読み取らず、終了します。このコードの何が問題になっていますか?
サーバー.c:
client.c:
c# - FIFO FILE への書き込み、Linux および Mono(C#)
タイトルに書いたことをやりたい。しかし、私は単にそれを理解することができません。私もすべてグーグルで検索しました。mkfifo によって作成された特殊なタイプの FIFO のファイルに文字列を書き込みたい (と思います)。これを行う方法について他に提案があれば、大歓迎です。
ruby - Ruby で名前付きパイプを作成する
Ruby 内に名前付きパイプを作成しようとしています。system
コマンド ( )を使用する以外system("mkfifo #{pipe_name}")
に、これを可能にするネイティブの Ruby 関数はありますか?
python - fifo - ループで読む
プログラム間の簡単な通信にos.mkfifoを使用したい。ループ内の fifo からの読み取りに問題があります。
fifo を操作するリーダーとライターがいるこのおもちゃの例を考えてみましょう。リーダーをループで実行して、fifo に入るすべてのものを読み取れるようにしたいと考えています。
そして作家:
python reader.py
and laterを実行するとpython writer.py foo
、「foo」が出力されますが、fifo は閉じられ、リーダーは終了します (またはwhile
ループ内でスピンします)。リーダーをループに留めておきたいので、ライターを何度も実行できます。
編集
このスニペットを使用して問題を処理します。
しかし、ファイルを繰り返し開くのではなく、もっとうまく処理する方法があるかもしれません...
関連している
c - mkfifo を使用して、書き込みまで読み取りをブロックする
パイプ mkfifo を使用しています。読み手と書き手がいます。
ファイルに何かがあるまでリーダーをブロックしてほしい。
非ブロック モード用の O_NONBLOCK を設定できるフラグがあります。したがって、デフォルトでは、読み取り時にブロックする必要があります。
ファイルへの書き込み
ファイルからの読み取り
python - PythonでFIFOが削除されたことを検出するにはどうすればよいですか
mkfifo
Python では、次のようにして fifo (Linuxコマンドで作成) で着信データをポーリングできます。
ただし、データがない場合と、FIFO が削除された場合 (呼び出しread()
による外部プログラムによって) の両方で、空の文字列が返されます。
聞いている fifo が存在しないことを確認する方法はありますか? remove()
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 つのプロセス間で何らかの方法で同期する必要があるかどうか疑問に思っています。
ありがとう!