日期:2014-05-16  浏览次数:20786 次

为一个较大的应用软件实现一个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的代码。