为一个较大的应用软件实现一个c/c++命令行的界面 。。。
不知道发这里合不合适。。。
================
在Linux系统,有一个较大的应用软件, 现在要用c/c++为这个软件实现一个命令行的界面。 比如这个应用软件的名字叫 A, 在一般的shell下, 我输入 "A Cmd1 argument1 argument2 ... argumentN ", 系统运行命令后退出。这里cmd1会有100多个命令,他们属于多个不同的分类,比如系统用户管理类,系统网络管理类 等等。
对于这个命令行的界面,当然还有一些别的要求,比如要支持命令和命令行参数的替换, 比如 "A shutdown arg1 arg2 ... " 和 "A stop arg1 arg2 ... " 一样, 有一些命令要支持setuid 。。。
会有100多个命令, 可能会有新的命令加入,所以要求这个命令行的界面地设计要容易扩展和修改。
大家对于设计这样一个c/c++命令行的界面有啥好的建议。不是要你们的code, 只要建议想法就可以了。
谢谢。
------解决方案--------------------看你想设计什么样的命令引擎了。简单的命令只接受单条命令及其参数。复杂命令则更像脚本程序设计语言,允许多条命令协同工作。
acange (acan)最好先深入分析一下你们的系统需要什么样的命令。然后再定方案。复杂的命令脚本可能需要编译技术来做,简单的写个命令行分析模块就ok了。
------解决方案--------------------我虽然没有回答您的问题,但也帮您顶了下,求您给小女几分好吗?我非专业,但需要点分提问啊!
呵呵,谢谢!!
------解决方案--------------------lz请参考busybox的实现
------解决方案--------------------利用表格驱动命令
struct command {
const char *name;
int (*func) (const char *argv[]);
......
};
如果想更细一点,可以看看GNU的一些小工具的代码。或者看bash的代码。