問題タブ [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.
cygwin - mkfifoにより端末がハングしますか?
mkfifo
単にCygwinで動作しませんか?次のような単純なコマンドセット
カーソルが点滅している状態で端末を永久に停止させるだけです。私は「間違ったことをしている」のでしょうか?
c - mkfifo()エラー--->「名前付きパイプの作成中にエラーが発生しました。:ファイルが存在します」
mkfifo関数は、パスとモードの2つの引数を取ります。しかし、それが使用するパスの形式はわかりません。名前付きパイプを作成し、のパスとして作成する小さなプログラムを作成していmkfifo
ます。/home/username/Documents
たとえばを使用しますが、メッセージとともに常に-1を返しますError creating the named pipe.: File exists
。
私はこのディレクトリを何度もチェックしましたが、その中にパイプはありません。だから私は何が問題なのか疑問に思っています。mkfifoで使用するモードは0666または0777です。
c - C の FIFO (名前付きパイプ)
mkfifo()
現在のディレクトリに移動しようとすると、アクセス許可エラーが発生します。ここにファイルを作成する権限は間違いなくあります。何が問題なのですか?
c++ - 追加モードでパイプを開く
1つのスレッドが書き込むFIFOパイプを開こうとしていますが、同期はすべて良好です。ただし、理解できる理由から、追加モードで開く必要があります。
私がそれを次のように開くとき:
問題はありません。フォルダを「ls」すると、パイプが黄色でマークされているのがわかります。
しかし、次のようにパイプを開こうとすると、追加モードで次のようになります。
フォルダ内のパイプがまったく見えません。記録のために、私はオプションのいずれかでエラーが発生します誰かが理由のアイデアを持っていますか?
ありがとう
c - Cプログラミングを使用したLinuxパイプライン。パイプラインを介した入力/出力のリダイレクト
私はLinuxの初心者ですが、自分でシェルを作成することができました。そこにパイプラインを追加する時が来ました。(それは、宿題が言うことです)。誰かが私にそれを行う方法をもう少し説明できますか?理論的には、そのように機能するはずです。
しかし、私はそれを動作させることができません。私はその日を一日中やっていますが、それでも何もしていません。私はその考えを理解していますが、それを機能させることができません。some1は私を助けることができますか?これが私のパイプライン部分のコードです:
これがシェルコマンドの例です
ありがとう
c - C でパイプライン処理を実装しています。これを行う最善の方法は何でしょうか?
実際に機能するcでパイプラインを実装する方法は考えられません。ということで、ここに書き込むことにしました。パイプ/フォーク/mkfifo がどのように機能するかを理解していると言わざるを得ません。2 ~ 3 個のパイプラインを実装する例をたくさん見てきました。それは簡単です。私の問題は、シェルを実装する必要があるときに始まり、パイプラインの数が不明です。
私が今持っているもの:例えば。
私はそのような行をそのようなものに変換します:
だから私は使うことができます
後で。
今のところ、すべて問題ないと思います。これらの関数の入出力を相互にリダイレクトしようとすると、問題が発生します。
これが私がやっている方法です:
ありがとう。
c - FIFO 上の複数のリーダー/ライター (名前付きパイプ)
mkfifo を使用して名前付きパイプを作成し、リーダーとライターを開きました。次に、同じ fifo で 2 番目のリーダー/ライターを開きましたが、open は代わりに ENXIO を返します。
複数回開くことができるようにするために、パイプを開くときに設定する必要がある特定のフラグはありますか? ドキュメントを読みましたが、上記が失敗する理由についての説明は見つかりませんでした(これまでのところ、Cygwinでのみテストしました)。here で説明されているように、FIFO で複数のリーダー/ライターを開くことは完全に有効です。
これを使用して、別のプロジェクトで使用する必要がある WinAPI の OpenEvent 機能を複製します。
編集: Debian と Ubuntu でこれをテストしました - どちらも POSIX に準拠し、複数のライターを許可します (したがって、上記のコードは問題を示しません)。Cygwin の実装は壊れています (つまり、POSIX に準拠していません)。
php - 既存の FIFO を再度開くと、「No such file or directory」というエラーが表示される
PHP Web サイトと C++ プログラムの間の非常に単純な通信を実現しようとしています。選択された解決策は、Linux fifo を利用することでした。
これは最初のコマンドではうまく機能しますが、ファイルを再度開いてみるとエラーが返されます。エラー メッセージの詳細については、次のコードを参照してください。
C++ アプリケーション:
PHP:
C++ アプリケーション:
上記のコードの問題は何でしょうか? 「そのようなファイルまたはディレクトリはありません」および「ファイルが存在します」というメッセージは、非常に対立しています。
ところで: 私は、このコミュニケーションのための別の種類のソリューション、たとえば C++ ソリューションやブースト ライブラリを使用したものに対してオープンです。
linux - poll() を使用した名前付きパイプの O_RDWR
私はさまざまな Linux 名前付きパイプ クライアント/サーバーの実装を経験しましたが、それらのほとんどは読み取り/書き込みでブロックの既定値を使用します。
私はすでに poll() を使用して他のフラグをチェックしているので、poll() を介して着信 FIFO データをチェックすることもお勧めします...
すべての調査の結果、パイプを O_RDWR モードで開くことが、ライターがパイプを開いていない場合に、パイプでの無制限の数の EOF イベントを防ぐ唯一の方法であると思います。
このようにして、パイプの両端が閉じられ、他のクライアントも書き込み可能な端を開くことができます。返信するには、別のパイプを使用します...
私の問題は、O_RDWR フラグを使用する例をいくつか見つけましたが、open() マンページでは、このフラグが FIFO に割り当てられたときに未定義であると説明されていることです。( http://linux.die.net/man/3/open )
しかし、O_RDWR のないパイプで poll() をどのように使用しますか? 「O_RDWR」はパイプを開く正当な方法だと思いますか???