1

何らかの理由で中断された場合に処理したいepoll_wait(たとえば、SIGINT による)

while ( true ) {
    n = epoll_wait ( epoll_fd, events, max_events, -1 );
    if ( errno == EINTR ) {
        ...
    }
}

しかし、デバッガーは にも行きませんでしたif。プログラムは で終了しましたepoll_wait。私はいくつかの魔法を追加しました:

signal ( SIGINT, placebo );
while ( true ) {
    n = epoll_wait ( epoll_fd, events, max_events, -1 );
    if ( errno == EINTR ) {
        ...
    }
}

そして、すべてが期待どおりに機能します。しかし、これは醜いです。epoll_waitanyの割り込みを処理させる正しい方法は何ですか?

4

1 に答える 1