問題タブ [posix]
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 : POSIX スレッド ライブラリ テスト スイート
私はユーザーレベルのスレッドを実装するスレッドライブラリに取り組んでおり (私は動作する pthread_setscope のようなものを持っています)、私が実装するすべての関数 (ミューテックス、条件など) に対して 1 つを書くことを避けるためのテストのセットを探しています... )
誰かそのようなことを知っていますか?
c - 別のスレッドでファイル記述子を close(2) すると、select(2) は何をしますか?
select(2)
読み取りを監視しているファイル記述子が別のスレッドによって閉じられたときの関数の動作は何ですか?
いくつかの大まかなテストから、すぐに戻ります。結果は、(a) まだデータを待ち続けているが、実際にデータから読み取ろうとすると、EBADF が返される (おそらく競合が発生する可能性がある) か、(b) ふりをするかのいずれかであると思われます。ファイル記述子が渡されることはありませんでした。後者のケースが当てはまる場合、タイムアウトなしで単一の fd を渡すと、それが閉じられた場合にデッドロックが発生します。
c - fopen() の代わりに open() を使用する通常の理由はありますか?
私はかなり長い間Cから離れていた後、Cで小さなプロジェクトを行っています。これらには、たまたまファイル処理が含まれています。FILE *
さまざまなドキュメントで、ハンドルを返す関数と (小さな整数) 記述子を返す関数があることに気付きました。どちらの機能セットも必要な基本サービスは同じなので、どちらを使用してもかまいません。
しかし、私はコレクションの知恵に興味があります: fopen()
and friends と and friends のどちらを使うのが良いopen()
でしょうか?
編集誰かがバッファありとバッファなし、およびデバイスへのアクセスについて言及したので、この小さなプロジェクトの一部が FUSE の下でユーザー空間ファイルシステム ドライバーを作成することを追加する必要があります。したがって、ファイル レベルのアクセスは、デバイス (CDROM や SCSI ドライブなど) に対しても、"ファイル" (つまり、イメージ) に対しても簡単に行うことができます。
c++ - pselect() は、IO アクティビティがあるソケットを認識しません
たとえば、次のコード スニペットでは、ソケットの作成、新しいソケットのリッスンと受け入れが正常に機能します。ノンブロッキング モードも機能していますが、pselect (または select に置き換えても) は、FDset で準備ができている IO 要求を認識していません。そのため、戻り値は常に 0 (タイムアウト) です。
IO アクティビティを認識できるように、pselect() に入る前にさらに何かを設定する必要があるかどうか疑問に思っていました。
linux - async socket connect からのエラーはどのように報告されますか?
ソケットを非同期に接続しています (O_NONBLOCK + 接続)。POSIX 標準は、ソケットが接続された後、ソケットのファイル記述子を書き込み可能にすることによってイベントを通知する必要があることを指定しています。非同期接続中の失敗については何も言っていないようです。
Linux でテストすると、この状況で POLLOUT が発生したり、POLLERR が発生したりすることがあるようです。行動にパターンはありますか?単一の方法でエラーを報告するようにできますか? POSIX は私が見落としていることを言っていますか?
c++ - C++ の Posix スレッド
Linux C++ で posix スレッドを実装する方法.「.c」として保存され、c コンパイラを使用して実行される smme プログラムは問題ありませんが、c++ ではエラーが発生します..
コンパイル時に間違ったと思いますが、C++ の「-lpthread」のように含めるタグはありますか
誰かが有効なコードを送ってくれませんか...?
実際、これは私のコードです
そして、私が得ているエラーは
ipc - 多くのプロセスがposixの名前付きパイプで単一のリーダーに書き込むことへの影響はありますか?
私はPOSIX(OSX)用のプログラムを書いています。ここでは、本質的にロギングスレッドである1つのリスナーにメッセージを送信する多くのプロセスがあります。すべてのプロセスは個別のプログラムで実行され、多くのプロセスが書き込む単一の名前付きパイプ (FIFO) を使用しますが、単一のプロセスのみが読み取りを行うのは非常に魅力的です。
質問:
1) これは機能しますか? - bash を使用して、複数のプロセスが書き込みを行う fifo をセットアップすることで、これを機能させることができるので、理論的にはこれが機能することがわかっています。しかし、実際には、私が見落としている問題はありますか?
シェル #1
シェル #2 と #3
2) 各ライターが比較的短いメッセージ (< 100 バイト?) のみを書き込む場合、 write() への各呼び出しが全体としてリーダーに送信されると想定できますか? それとも、あるメッセージの半分が、別のライターからの別のメッセージの半分で文字化けする危険がありますか?
アドバイスをありがとう。
macos - 名前付きパイプ (FIFO) で poll() を使用すると、OS X にバグがあるように見えます... 専門家は確認できますか?
しばらくの間、名前付きパイプのセットからポーリングしようとしていますが、名前付きパイプ ファイル記述子で POLLNVAL の即時応答を取得し続けています。OS X の壊れたポーリングに関するこのブログ投稿を見つけた後、これは OS X のバグ バグであると確信しています。
私はすでにコードをUDPソケットを使用するように切り替えることを計画していますが、これについてa)本当に壊れていることを確認するため、およびb)文書化の目的でSOに検証を依頼したかったのです。
これは私が書いたコードの簡略化されたバージョンです(ただし、私がテストした上記のリンクのコードは、それをかなりうまく綴っています):
これは以下を出力します:
吐き気。
他の誰かがこれに遭遇しますか?これは本当のバグですよね?
c - ファイル名を期待してC APIにデータをフィードする
Linux で単純な C プログラムを作成しており、ファイルからのデータを期待する既存のライブラリの API を使用したいと考えています。const char* としてファイル名を入力する必要があります。しかし、ファイルのコンテンツと同じように、ヒープに割り当てられたバッファーに既にデータがあります。十分な RAM があり、高性能が必要です。一時ファイルをディスクに書き込むのを避けたいのですが、ファイルのように見える方法でこの API にデータを供給する良い方法は何ですか?
これが私のコードの安価なふりバージョンです:
marvelouslibrary.h:
ライブラリが最初に設計された normal-persons-usage.cpp:
myprogram.cpp:
明確にするために言うと、marvelouslibrary はポインターによってデータを受け入れる API 関数を提供していません。ファイルの読み取りのみが可能です。
パイプと mkfifo() を考えましたが、プロセス間の通信を目的としているようです。私はこれらのことについて専門家ではありません。名前付きパイプは、同じプロセスで読み取りと書き込みを行っても問題ありませんか? これは賢明なアプローチですか?
または、賢いことをスキップして、シャッドアップして一時ファイルを書き込むという計画「B」に進みます。しかし、新しいことを学び、この状況で何ができるかを知りたいと思っています。