【问题标题】:Getting the KVM VM domain name in a C program using libvirt API使用 libvirt API 在 C 程序中获取 KVM VM 域名
【发布时间】:2014-06-07 19:58:40
【问题描述】:

我正在编写一个 C 程序,我想获取 KVM 虚拟机的域名。有没有简单的方法可以做到这一点?我有机器的 VM id,并且可以获得指向 virDomainInfo 结构的指针。我知道我可以使用命令virsh domname <id> 来完成它,但我似乎找不到 libvirt API,所以我可以通过编程方式完成它。经过一番挖掘,我找到了 virDomain 的结构信息。是否可以从那里获取它?

struct _virDomain {
   virObject object;
   virConnectPtr conn;                  /* pointer back to the connection */
   char *name;                          /* the domain external name */
   int id;                              /* the domain ID */
   unsigned char uuid[VIR_UUID_BUFLEN]; /* the domain unique identifier */
 };

下面是我正在使用的代码。

virConnectPtr conn = virConnectOpen(connString);
virDomainPtr domainPtr = virDomainLookupByID(conn, vmid);

不知道从这里去哪里。提前感谢您的帮助。

【问题讨论】:

    标签: c qemu kvm libvirt


    【解决方案1】:

    刚刚浏览了我找到的 virDomainGetName 的 libvirt API,这似乎正是你想要的:

    virDomainGetName

    const char * virDomainGetName (virDomainPtr 域)

    获取该域的公共名称

    域 域对象返回 指向名称或 NULL 的指针,不需要释放字符串,其生命周期将与域对象相同。

    我一起通过了一些示例代码:

      int main(int argc, char **argv) {
              virConnectPtr c;
              virDomainPtr d;
              char *name;
    
              c = virConnectOpen(NULL);
              d = virDomainLookupByID(c, 2);
              name = virDomainGetName(d);
    
              printf("name of domain %d is %s\n", 2, name);
              return 0;
      }
    

    【讨论】:

    • 哇,我不知道我是怎么错过的。一定是盯着它看太久了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多