getopt與getopt_long

劉建章發表於2019-01-03

如何通過命令列,為程式傳入引數,可以使用函式getopt與getopt_long。

函式的宣告如下:

#include <unistd.h>

       int getopt(int argc, char * const argv[],
                  const char *optstring);

       extern char *optarg;
       extern int optind, opterr, optopt;

       #include <getopt.h>

       int getopt_long(int argc, char * const argv[],
                  const char *optstring,
                  const struct option *longopts, int *longindex);

       int getopt_long_only(int argc, char * const argv[],
                  const char *optstring,
                  const struct option *longopts, int *longindex);

函式getopt能夠輸入,類似“-r”, “-h”之類的短引數,如果需要輸入長引數,如–help”就用函式getopt_long。

更詳細的用法,建議man getopt。

但是我手上有個需求是,傳入多個引數,如下面命令來連續讀出16個暫存器的取值。

./mem_rdwr.out --rd 0x70006d00 16

 

看上去用getopt實現不了,還是自己手寫程式來解析吧

 

相關文章