当前位置:  技术问答>linux和unix

基于Linux,为一个较大的应用软件实现一个c/c++命令行的界面 。。。

    来源: 互联网  发布时间:2016-01-22

    本文导语:  在Linux系统,有一个较大的应用软件, 现在要用c/c++为这个软件实现一个命令行的界面。 比如这个应用软件的名字叫 A, 在一般的shell下, 我输入 "A Cmd1 argument1 argument2 ... argumentN", 系统运行命令后退出。这里cm...

在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, 只要建议想法就可以了。

谢谢。

|
一般用getopt库来解析命令行。有短格式和长格式,也可以两者都支持,比如:
A -a 123 -b 234
或者
A --arg1 123 --arg2 234

man 3 getopt
可以的到用法,里面有一个详细的可以运行的例子

|
顺便把man里面的例子贴给你,用getopt的话,参数顺序无所谓:

       #include      /* for printf */
       #include     /* for exit */
       #include 

       int
       main (int argc, char **argv) {
           int c;
           int digit_optind = 0;

           while (1) {
               int this_option_optind = optind ? optind : 1;
               int option_index = 0;
               static struct option long_options[] = {
                   {"add", 1, 0, 0},
                   {"append", 0, 0, 0},
                   {"delete", 1, 0, 0},
                   {"verbose", 0, 0, 0},
                   {"create", 1, 0, 'c'},
                   {"file", 1, 0, 0},
                   {0, 0, 0, 0}
               };

               c = getopt_long (argc, argv, "abc:d:012",
                        long_options, &option_index);
               if (c == -1)
                   break;

               switch (c) {
               case 0:
                   printf ("option %s", long_options[option_index].name);
                   if (optarg)
                       printf (" with arg %s", optarg);
                   printf ("n");
                   break;

               case '0':
               case '1':
               case '2':
                   if (digit_optind != 0 && digit_optind != this_option_optind)
                     printf ("digits occur in two different argv-elements.n");
                   digit_optind = this_option_optind;
                   printf ("option %cn", c);
                   break;

               case 'a':
                   printf ("option an");
                   break;

               case 'b':
                   printf ("option bn");
                   break;

               case 'c':
                   printf ("option c with value '%s'n", optarg);
                   break;

               case 'd':
                   printf ("option d with value '%s'n", optarg);
                   break;

               case '?':
                   break;

               default:
                   printf ("?? getopt returned character code 0%o ??n", c);
               }
           }

           if (optind 

    
 
 

您可能感兴趣的文章:

  • Linux下有哪些可视化软件开发Linux下的应用软件和驱动程序
  • Linux应用软件问题?
  • 怎样在 Linux 上安装一个 千千静听呀, 或是其它的一些应用软件
  • linux中的网页制作应用软件
  • linux下的应用软件开发到底都用什么语言啊??
  • 在Linux环境下如何安装应用软件?(就这么多分了,问题解决一定追加分)
  • 如何把电子盘中已安装好的LINUX内核及应用软件制作成安装光盘......
  • linux的应用软件在哪里下载?急!!!!
  • 请问如何在linux下安装应用软件
  • linux下命令应用软件的源码放在那里?
  • linux下如何安装应用软件
  • 哪里有LINUX的简化版本(不要包含一大堆应用软件)下载?
  • linux商业应用或者说开源软件商业应用是否需要付费?
  • 如何制作Linux应用软件的安装程序
  • 请问:LINUX下载的文件按惯例放哪里啊?安装的应用软件按惯例放哪里呢?
  • 在哪里看我现在linux系统中用的应用软件的版本号?比如wu-ftp sendmail等等!
  • 求助:该用什么LINUX+应用软件 替代MS的东西?
  • 本人想投奔linux,请问IBM T42装linux方便吗?主要是驱动方面以及一些基本应用软件的问题完善吗
  • RedHat9.0:谁知道在linux下还有哪些TFTP SERVER的应用软件可以使用?除了RH9.0自带的那个以外
  • 关于LINUX中应用软件包的问题
  • 红旗Linux如何将图形界面KDE切换成文本控制台界面,两个界面如何互为切换?
  • linux 启动只能进入图形界面,怎么让起动可以进入字符界面?
  • 在Miracle linux的text界面下用什么命令进入图形界面?
  • 我装的是Red Hag Linux 9.0 装完可以进入图形界面,可是我想进入控制台界面,怎么进入,从图形界面可以进入吗?
  • 如何将linux命令行界面变为图形化界面
  • LINUX安装时的字符界面是用什么界面库写的?
  • 安装Linux,界面一直停留在选择语言的界面
  • php开源软件 iis7站长之家
  • 新手问题,在linux下c/c++开发是在图形界面下还是字符界面下进行?
  • 请问:linux进了文字界面后怎样进图形界面??
  • linux下配置网卡图形界面与终端界面下不一致问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • linux中有没有什么命令能列出所有linux的内部命令
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 有没有在windows下模拟Linux命令系统的软件! 我想学习Linux的基本命令!
  • Linux下chmod命令详细介绍及用法举例
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • linux bash shell命令:grep文本搜索工具简介
  • linux系统安装测试命令oslevel,lsdev命令不识别
  • Linux_centos_redhat下tar命令解压tgz文件方法
  • 在Linux下使用ftp命令,被提示命令没有找到
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • linux命令行下使用curl命令查看自己机器的外网ip
  • linux下free命令显示的内存使用情况分析
  • linux中的用户,用什么命令修改密码(要一条命令做到)???
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • linux 中查看过去运行的命令的命令是什么?
  • Linux下curl的下载,安装以及curl命令的详细参数,用法介绍
  • linux下执行命令为什么要在命令前加./
  • linux下不使用sudo命令执行docker的操作步骤
  • linux的命令,怎么能知道这个命令的默认选项是什么?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3