我正在写一个C程序,我想获得KVM VM的域名。有一个简单的方法吗?我有机器的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);
不知道从哪里开始。提前感谢您的帮助。
答案 0 :(得分:3)
浏览我发现的virDomainGetName libvirt API,看起来它可能正是您想要的:
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;
}