概述
在linux
下,为一个程序创建多个不同名的软链接,并达到行不同的名称运行该程序的不同功能。
实现
定义功能
typedef int (*cmd_func)(int, char const **);
int himc(int c, char const **v) { return 0; }
int himm(int c, char const **v) { return 0; }
定义结构
typedef struct CMDSHELL_STRU
{
char *cmdstr;
cmd_func pFunc;
char *helpstr;
} CMD_SHELL_T;
定义实例
static CMD_SHELL_T pCmds[] = {
{"himc", himc, "memory clear"},
{"himm", himm, "memory modify"},
{NULL, NULL, 0},
};
确定命令
CMD_SHELL_T *get(int argc, char const *argv[])
{
int i;
while (pCmds[i].cmdstr)
{
if (strcmp(pCmds[i].cmdstr, argv[0]) == 0)
{
return (&pCmds[i]);
}
i++;
}
return NULL;
}
执行命令
CMD_SHELL_T *pCmd = get(argc, argv);
if (pCmd)
return ((int)pCmd->pFunc(argc, argv));
应用
gcc *.c -o btools
ln -s btools himc
ln -s btools himm
export PATH=$PATH:`pwd`
himc
himm