問題タブ [epoll]

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 に答える
32808 参照

c++ - Linux での Epoll に関するガイドをいくつかお勧めしてもらえますか

Epoll On Linux System について知りたいです。

epoll ライブラリに関するお勧めのマニュアルやガイドを教えてください。

より詳細なガイドが必要です。いくつかの例がある方が良いです。

助けて。読んでいただきありがとうございます。

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

windows - Windows での epoll/kqueue/select の最適な同等物は何ですか?

Windows の最高の I/O イベント通知機能は何ですか?

せいぜい私は何かを意味します...

  1. 入力ファイル記述子の数に制限はありません
  2. すべてのファイル記述子 (ディスク ファイル、ソケットなど) で動作します。
  3. さまざまな通知モードを提供 (エッジ トリガー、リミット トリガー)
0 投票する
2 に答える
5595 参照

select - Boost Message Queue not based on POSIX message queue? Impossible to select(2)?

I thought I'd use Boost.Interprocess's Message Queue in place of sockets for communication within one host. But after digging into it, it seems that this library for some reason eschews the POSIX message queue facility (which my Linux system supports), and instead is implemented on top of POSIX shared memory. The interface is similar enough that you might not guess this right away, but it seems to be the case.

The downside for me is that shared memory obtained via shm_open(3) does not appear to be usable with select(2), as opposed to POSIX message queues obtained via mq_open(3).

It seems like Boost's library loses in this case. Does anyone understand know why this should be? Even if it POSIX message queues are only available on some systems, I'd expect Boost to use that facility where it is available, and reimplement it only where necessary. Is there some pitfall of the POSIX system which I do not yet recognize?

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

c - poll() はタイムアウト 0 で何をしますか?

poll() man pageを見ているpoll()と、timeout パラメータに正と負の値が渡されたときの動作がわかります。タイムアウトが の場合に何が起こるかはわかりません0何か案は?

epoll_wait() man ページを見ると、タイムアウト値が の0場合、使用可能なイベントがなくてもすぐに戻ることがわかります。それが同じように振る舞うと仮定しても安全ですか?poll()

0 投票する
10 に答える
10674 参照

python - Pythonでepollがクライアント側のクローズを検出する方法は?

これが私のサーバーです

クライアント側の入力

サーバー側出力

クライアントが接続を閉じた後でも、epoll が recv をポーリングしてイベントを送信できるのは奇妙です! EPOLLERR イベントが発生しないのはなぜですか? EPOLLHUP を使用する場合も同様です。

EPOLLERR イベントは、閉じた接続を書き込もうとしたときにのみ発生することに気付きました。これ以外に、接続が閉じられたかどうかを確認する別の方法はありますか?

EPOLLIN イベントで何も得られない場合、接続を閉じたものとして扱うのは正しいですか?

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

linux - 反対側が書き込みを行って閉じたときに、epoll 制御のノンブロッキング ソケットでバイトが失われる

私は現在サブスクライブしているノンブロッキングソケットを持っています:

いくつかの EPOLLIN を受信し、EAGAIN までノンブロッキングで読み取り、次に HUP と RDHUP を受信します。さらに数バイトを読み取ることもあります。

反対側は次のとおりです。

epollin と close 時間の両方のイベント ループで直接 msg_peek を使用して recv を試しました。

ソケットをノンブロッキングにするか、送信とクローズの間でクライアントに sleep(1) を入れると問題なく動作します。

epollに関連するよりも、ノンブロッキングソケットの問題に思えます。「nc -l -p port」のような単純なもので、適切な量のバイトを受け取ります。

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

linux - 接続が確立されているかどうかを検出する

最近、Linux でのネットワーク プログラミングの学習を始めましたが、リモート ホストへの接続が確立されているかどうかを検出する正しい方法がわかりません。ATM 確立されていないすべての接続は、epoll インスタンスに登録されます。EPOLLOUT フラグが 1 に設定されたイベントが到着すると、接続は確立済みとしてマークされます。これと同じくらい簡単ですが、私はこれを正しくやっています...

これを行うより良い方法はありますか?そうでない場合、ソケットが書き込み可能になるのを待つことは、接続が確立されたことを保証する良い方法ですか?

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

linux - 単一のイベントループでAIOとepollをどのように一緒に使用しますか?

AIOとepollを1つのイベントループに組み合わせるにはどうすればよいですか?

グーグルは2002年と2003年からそれらを統合することについて多くの話を見つけますが、何かが起こったかどうか、またはそれが可能かどうかは不明です。

誰かがaio信号にeventfdを使用してepollループで自分自身をロールバックしましたか?

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

linux - 受け入れる/epollの問題

epoll を使用するこのコードがあり、問題があります。実行すると、次のような出力が得られます: Server-socket() is OK... Server-bind() is OK... 3 4 accept: Invalid argument

限られたユーザーとルートの両方として、システムが更新されたubuntu Linuxで実行しています。受け入れる入力の何が問題になっていますか? 何を変更すればよいですか?

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

linux - 送信機能をブロックできますか

チャット プログラムを作成していますが、サーバーに対してデータを送信するときに、send() 関数がデータを送信するのに時間がかかることがありますか?

ここに私の問題があります: 私は Linux 2.6 を epoll で使用しています。サーバーはシングルスレッドです send() がブロックされると、サーバー上の他のすべてのアクティビティが停止します。たとえば、tcp パケットに対して ACK 応答を長時間送信しない非常に遅いクライアントがある場合、送信機能はすぐに移動するか、クライアントを長時間待機します。私が望んでいないのは、単一または少数の遅いクライアントがチャット サーバーで遅延を引き起こすことです。

私が欲しいのは、 send() を非ブロックにして、非常に迅速に返すことです。すべてのデータが送信されない場合は、送信された量が返されるだけで、それをバッファから削除し、すべてのデータが送信されるまで次回のサービスで送信を続けます。基本的に、低速または応答のないクライアントで長時間送信をブロックしたくありません。