首页 > 解决方案 > 为什么拔掉电缆时revents是0?

问题描述

我有一个检查以太网链路状态的功能。插入电缆后,revents 即为 POLLIN。因此,“状态已更改”行。被打印出来。但如果拔下电缆,revents 为 0。然后“状态已更改”。没有打印出来。为什么拔掉电缆时revents为0?在这种情况下,我怎么知道电缆是否被拔掉了?

void pollLink()
{
    struct pollfd poll_data[1];
    
    poll_data[0].fd = 0;
    poll_data[0].events = POLLIN;

    poll(poll_data, 1, 0);
    if (poll_data[0].revents == POLLIN)
    {
        printf("Status is changed.");
    }
}

标签: clinuxnetworking

解决方案


推荐阅读