Linuxのpoll関数の使い方は何ですか?
poll()関数はLinuxで使用される関数であり、複数のファイルディスクリプタを監視し、イベントが発生した際に対応するために使用されます。使用方法は次の通りです:
- include ヘッダファイル:
#include <poll.h>
- pollfd構造体の配列を定義して初期化してください。
struct pollfd fds[nfds];
nfdsは監視するファイルディスクリプタの数です。
- 各ファイルディスクリプタのイベントタイプと監視対象を設定します。
fds[i].fd = fd; // 监视的文件描述符
fds[i].events = events; // 监视的事件类型,如POLLIN(可读), POLLOUT(可写)
fds[i].revents = 0; // 实际发生的事件类型,由系统填充
- poll()関数を使用して監視を行う:
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
timeoutはミリ秒単位でのタイムアウト時間で、-1に設定すると無限に待機することを意味します。
- イベントが発生したかどうかを判断するために戻り値をチェックしてください。
if (fds[i].revents & POLLIN) {
// 可读事件发生,进行相应处理
}
if (fds[i].revents & POLLOUT) {
// 可写事件发生,进行相应处理
}
// 可以根据其他事件类型进行相应处理
ポイント:poll()関数が返却される際、実際に発生したイベントのタイプがreventsフィールドに埋め込まれます。ビット演算を使用して判定することができます。
これはpoll()関数の基本的な使用方法ですが、具体的な要件に応じて適切に調整や拡張することができます。