libvirt-go DomainEventLifecycleRegister "could not initialize domain event timer"

libvirt-go DomainEventLifecycleRegister "could not initialize domain event timer"

我已经安装 libvirt-dev、编译并 运行 在 Ubuntu 盒子上的代码:

package main

import (
    "fmt"
    "github.com/libvirt/libvirt-go"
)

func main() {
    conn, _ := libvirt.NewConnect("qemu:///system")
    defer conn.Close()

    cb := func(c *libvirt.Connect, d *libvirt.Domain, event *libvirt.DomainEventLifecycle) {
        fmt.Println(fmt.Sprintf("Event %d", event.Event))
    }

    _, err := conn.DomainEventLifecycleRegister(nil, cb)
    if err != nil {
        panic(fmt.Sprintf("cannot register libvirt domain event: %s", err))
   }
}

得到:cannot register libvirt domain event: virError(Code=1, Domain=0, Message='internal error: could not initialize domain event timer')

我正在使用 libvirt-go while digital ocean go-libvirt LifecycleEvents 效果很好...

有什么想法吗?

您还没有注册任何事件循环实现。

最简单的方法是在打开 libvirt 连接之前调用 EventRegisterDefaultImpl,然后生成一个在无限循环中运行 EventRunDefaultImpl 的 goroutine

更难的方法是使用 EventRegisterImpl

提供您自己的自定义事件循环实现