通过libvirt API在C语言中获取KVM虚拟机域名



我正在写一个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);

不知道从这里去哪里。谢谢你的帮助。

只是浏览libvirt API,我发现了virDomainGetName,这似乎正是你想要的:

virDomainGetName

const char * virdomainingetname (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 %sn", 2, name);
          return 0;
  }

相关内容

  • 没有找到相关文章

最新更新