轮询 libusb_pollfd 结构列表的正确方法是什么?

问题描述 投票:0回答:1

pollfd的结构为:

struct pollfd {
        int fd;             /* file descriptor */
        short events;       /* requested events */
        short revents;      /* returned events */
}

libusb_pollfd的结构为:

struct libusb_pollfd {
         int fd;         /* Numeric file descriptor. */
         short events;
}

poll函数的结构为:

int poll(struct pollfd *fds, nfds_t nfds, int timeout);

轮询 libusb_pollfd 结构列表的正确方法是什么?您是否使用经过某种修改的 poll 函数?或者是否有应该使用的 libusb 函数?

c polling libusb
1个回答
0
投票

似乎实现此目的的唯一方法是使用以下代码:

    struct libusb_pollfd **pollfds; 
    struct pollfd pollfd_array[n];

    pollfds = libusb_get_pollfds(context);
    for (i=0; pollfds[i] != NULL; i++)
    {
        pollfd_array[i].fd = pollfds[i]->fd;
        pollfd_array[i].events = pollfds[i]->events;
    }

    poll_ret = poll(pollfd_array, i, 0);

这正是我试图避免的。如果有更好的方法请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.