linux的vivi命令学习札记

2014-11-23 22:39:15 · 作者: · 浏览: 14

linux的vivi命令:


vivi每一个命令都是一个结构体变量:


typedef struct user_command {


const char *name;


void (*cmdfunc)(int argc, const char **);


struct user_command *next_cmd;


const char *helpstr;


} user_command_t


例如:boot命令


user_command_t boot_cmd = {


"boot",


command_boot,


NULL,


"boot [{cmds}] \t\t\t-- Booting linux kernel"


}


vivi的main函数通过调用misc()及init_buildin_cmds()将许多命令结构体形成一个链表,以全局变量head_cmd为头节点。执行命令时,首先通过函数parseargs()解析输入的命令,然后调用execcmd()查找相应的函数void (*cmdfunc)(int argc, const char **)调用。