これはおそらく一部の人にとっては些細な質問ですが、どういうわけかそれについてはわかりません。poll/epollの処理は割り込みコンテキストにありますか?
カーネルからイベントのポーリングを待つとき、新しいイベントの処理が割り込みコンテキストで行われるのでしょうか?
もしそうでなければ、ハンドラ内でハンドラ内の他のコマンドを使用してスリープ/ウェイトできますか?
int main (void)
{
struct pollfd fds[2];
int ret;
fds[0].fd = FILENO;
fds[0].events = POLLIN;
fds[1].fd = FILENO;
fds[1].events = POLLOUT;
ret = poll(fds, 2, TIMEOUT * 1000);
if (ret == -1) {
perror ("poll");
return 1;
}
if (!ret) {
return 0;
}
if (fds[0].revents & POLLIN)
{
/********** HANDLING EVENTS HERE ***************/
printf ("FILENO is POLLIN\n");
}
if (fds[1].revents & POLLOUT)
{
/********** HANDLING EVENTS HERE ***************/
printf ("FILENO is POLLOUT\n");
}
return 0;
}
はありがとう、 はありません(一般的に)
「割り込みコンテキスト」は、カーネルレベルの懸案事項です。ユーザー空間プログラムには影響しません。 – davmac