入口main
kvm-tools是一个普通的应用程序,所以入口是main函数,在源码树中,根目录下就有一个main.c,显然这就是入口文件。
非常简短,显然主要核心在于handle_command,即根据用户传进来的命令做不同的处理。
我们发现第一个参数是一个全局变量,我们看看是什么
我们发现是一个cmd_struct结构体数组
命令名字,命令执行函数指针,命令帮助信息,可选项
handle_command
利用用户传进来的命令行参数,利用kvm_get_command得到一个cmd_struct结构体,
然后执行其中的fn指针。所以我们的核心就得看命令函数,上边的kvm_commands中有各个命令函数,显然,我们最关心的是kvm_cmd_run,他用于跑起一个gust
kvm_cmd_run
首先利用kvm_cmd_run_init 进行跑虚拟机前的初始化工作
然后利用kvm_cmd_run_work 跑gust
最后利用kvm_cmd_run_exit 做清理工作
这三个函数是核心,所以相对来说比较复杂,我们分别开博文分析。