libguestfs java_libguestfs源码浅析

本文介绍了libguestfs的调用模式,以执行virt-df命令为例,展示了libguestfs_create、guestfs_add_domain、guestfs_set_identifier、guestfs_set_trace、guestfs_set_verbose及guestfs_launch等关键步骤。libguestfs主要由guestfsd、guestfs-lib和guestfish三部分组成,通过socket通信协议在主机和虚拟机之间交互。libguestfs句柄guestfs_h在guestfs_create中初始化,并通过guestfs_add_domain连接虚拟机。libguestfs_launch启动虚拟机,与guestfsd进行交互。文章还简单提及了guestfish的工作原理和libguestfs的性能表现。
摘要由CSDN通过智能技术生成

一般libguestfs的调用模式是这样的(以执行类似于virt-df命令的一段代码为例):

#include #include#include#include

#define STRNEQ(a, b) (strcmp((a),(b)) != 0)

int main (int argc, char *argv[])

{

guestfs_h*g;inti, j;char *dom;char **devices =NULL;char **fses =NULL;if ((dom = argv[1]) ==NULL) {

perror("domain name is NULL");

exit (EXIT_FAILURE);

}

g=guestfs_create ();if (g ==NULL) {

perror ("failed to create libguestfs handle");

exit (EXIT_FAILURE);

}

guestfs_add_domain(g,(const char *)dom,GUESTFS_ADD_DOMAIN_READONLY,1,-1);

guestfs_set_identifier (g,dom);

guestfs_set_trace (g,0);

guestfs_set_verbose (g,0);if (guestfs_launch (g) == -1) {

perror ("guestfs_launch\n");return -1;

}

devices=guestfs_list_devices (g);if (devices ==NULL){

perror ("guesfs_list_devices(g) == NULL");return -1;

}

fses=guestfs_list_filesystems (g);if (fses ==NULL){

perror ("guestfs_list_filesystem(g)");return -1;

}for (i = 0; fses[i] != NULL; i += 2) {if (STRNEQ (fses[i+1], "") &&STRNEQ (fses[i+1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值