LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 963|回复: 6

请教一个C程序执行的问题

[复制链接]
发表于 2003-11-8 16:50:58 | 显示全部楼层 |阅读模式
我编写了一个串口通信的程序,现在想改进一下:在运行时,希望在$命令行后直接键入-b[9600]-d[8]-x[16]这样的命令,实现波特率和数据位以及16进制显示的选择功能,好象是用到getop函数吗?我不太懂怎么实现,请斑竹或GGJJ帮忙指点一下吧,多谢!
发表于 2003-11-8 18:57:39 | 显示全部楼层
man 3 getopt
 楼主| 发表于 2003-11-8 20:25:08 | 显示全部楼层
多谢楼上的朋友,我想知道一下在程序里怎么来用函数实现,是否需要其他的子程序之类呢?多谢!
发表于 2003-11-11 09:59:29 | 显示全部楼层
发表于 2003-11-12 17:13:11 | 显示全部楼层

用getopt或getopt_long

#include <getopt.h>

extern int optind;
extern char *optarg;

int main(int argc, char **argv)
{
  const char delim[]="b:d:x:";
  char ch;
  while((ch=getopt(argc,argv,delim)!=-1)
  {
    switch(ch)
    {
      case 'w':
        /*
         * do your operation
         */
        break;
      case 'x':
        /*
         * do your operation
         */
        break;
      case 'b':
        /*
         * do your operation
         * optarg指向选项的参数
         */
        break;
      default:
        /*
         * ch='?', 无法识别的选项
         */
        break;
    }
  }

  /*
   * optind指向第一个参数的下标,通过argv[optind]可以获取
   */

  return 0;
}
 楼主| 发表于 2003-11-13 16:50:59 | 显示全部楼层
多谢 按照你的指点我已经做好了,调试通了.十分感谢!
现在的执行可以这样了:命令行里输入$./sd -b value -c value这样形式的参数可以运行.
但是如果我想在命令行里直接输入 比如:/dev/ttyS0 (不要加-),然后就能调用到我的打开串口的程序,这个程序我已经写好了,只是不知道如何去连接,用什么函数呢?敬请高手指点一二!!不要加-
 楼主| 发表于 2003-11-14 17:07:43 | 显示全部楼层
各位大哥,给点建议吧.我在努力的学习LINUX下的C编程,希望能早点出徒,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表