【问题标题】:I cannot epollctl() a pipe - I get Bad Address我不能 epollctl() 管道 - 我得到错误的地址
【发布时间】:2021-06-15 17:34:13
【问题描述】:

我正在尝试编写一个让我打破 epoll_wait() 的函数。

我有

void SocketSystem::epollBreakWait(int epoll)
{
    if (epoll == ERROR_CODE)
        return;

    int selfpipe[PIPE_PAIR];

    if (pipe(selfpipe) < 0)
        std::cout << "Error on self pipe." << std::endl;

    if (::epoll_ctl(epoll, EPOLL_CTL_ADD, selfpipe[0], NULL) == ERROR_CODE)
        std::cout <<  "Error breaking epoll." << std::endl;

    int temp = 0;
    ::write(selfpipe[1], &temp, sizeof(temp));   
}

但是当我运行它时,我得到错误 (-1) 和 errno = Bad address。 有什么想法吗?

【问题讨论】:

    标签: epoll


    【解决方案1】:

    你如何称呼epoll_wait 本身?我想你必须提供非空struct epoll_eventepoll_ctl

    【讨论】:

      【解决方案2】:

      拼写?

      我已尝试按照您的建议将非空 epoll_event 放入 epoll_ctl,这似乎解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多