首页 文章

使用libvirt API在C程序中获取KVM VM域名

提问于
浏览
2

我想知道KVM VM的域名 . 有一个简单的方法吗?我有机器的VM ID,可以获得指向virDomainInfo结构的指针 . 我知道我可以用命令 virsh domname <id> 来做,但我似乎无法找到libvirt API,所以我可以通过编程方式进行 . 经过一番挖掘后,我找到了virDomain的结构信息 . 从那里 grab 它会是一个选择吗?

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);

不知道从哪里开始 . 在此先感谢您的帮助 .

1 回答

  • 3

    只是浏览libvirt API我找到virDomainGetName,看起来它可能正是你想要的:

    virDomainGetName const char * virDomainGetName(virDomainPtr domain)获取域域对象的公共名称返回指向名称或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;
      }
    

相关问题