首页 > 解决方案 > libvirt-go DomainEventLifecycleRegister“无法初始化域事件计时器”

问题描述

我已经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而数字海洋go-libvirt LifecycleEvents工作正常......

有任何想法吗?

标签: qemulibvirtvirsh

解决方案


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

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

更难的方法是使用提供您自己的自定义事件循环实现EventRegisterImpl


推荐阅读