sd-event是一个类似于libev、libuv、libevent等的事件循环框架,我需要为监控服务实现libev事件循环。我能找到的所有手册页都谈到了sd_bus_get_fd()、sd_bus_get_events()和sd_bus_get_timeout()的使用,例如,在this page上。有没有人有使用这三个函数的项目示例?
发布于 2021-06-17 06:23:35
除了libevent + sdbus之外,没有任何用于libev的东西,它是这样的
//Global
static sd_bus *bus = NULL;
static struct event_base *base = NULL;
void bus_process(evutil_socket_t fd, short what, void *arg) {
sd_bus_process(bus, NULL);
}
void main() {
sd_bus_default_system(&bus);
sd_bus_request_name(bus, BUS_NAME, 0);
int fd = 0;
int events = 0;
uint64_t usec;
struct event *ev_read;
base = event_base_new()
fd = sd_bus_get_fd(bus);
events = sd_bus_get_events(bus);
sd_bus_get_timeout(bus, &usec);
evutil_make_socket_nonblocking(fd);
ev_read = event_new(base, fd, EV_READ|EV_PERSIST, bus_process, NULL);
event_add(ev_read, NULL);
event_base_dispatch(base);
// wont get here, loop is now running and processing
return;
}https://stackoverflow.com/questions/67989022
复制相似问题