在 Mac OS X 中获取选择

getopt in Mac OS X

我需要使用 getopt 函数解析参数。问题是如果我在选项之后的 and/or 之前有参数,getopt 就不起作用。一旦遇到非选项参数,选项处理就会停止。

例如:tftp ip port [-b blksize] src dest 不起作用。 但是 tftp [-b blksize] ip port src dest 效果很好。

显然,我需要在 optstring 的开头添加 + 才能混合参数和选项,但根据 [,Max OS X 不支持它=18=]

你有解决办法吗?谢谢。

将您传递给 getopt 的内容更改为 argvargc 以跳过命令部分。

例如,tftp ip port [-b blksize] src dest 你假装 argv[2]portargv[0]。调用 getopt(argc - 2, argv + 2, optstring).

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[]){
    int ch;

    while( (ch = getopt(argc - 2, argv + 2, "b:")) != -1 ) {
        printf("%c %s\n", ch, optarg);
    }

    return 0;
}

这只是一个例子。判断是否有命令或子命令的逻辑由你决定。