diff --git a/qtfs/rexec/rexec.c b/qtfs/rexec/rexec.c index c2aad20a41b93e08c819b4c0c142618acd2a9a51..43964a4d34deccd39893c08a00b6f80e5336ae16 100644 --- a/qtfs/rexec/rexec.c +++ b/qtfs/rexec/rexec.c @@ -255,9 +255,11 @@ static struct rexec_client_event *rexec_add_event(int efd, int fd, int outfd, in return event; } -static int rexec_del_event(struct rexec_client_event *event) +static int rexec_del_event(int efd, struct rexec_client_event *event) { - // close will del fd in epoll list + if (-1 == epoll_ctl(efd, EPOLL_CTL_DEL, event->fd, NULL)) { + rexec_err("epoll ctl del event fd:%d failed.", event->fd); + } close(event->fd); free(event); return 0; @@ -311,7 +313,7 @@ static void rexec_event_run(int efd) process_exit = 1; } if (ret == REXEC_EVENT_DEL) { - rexec_del_event(evt); + rexec_del_event(efd, evt); } } // process will exit, and free all resource and exit