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