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 **)调用。