在Mac OS X中使用getopt

时间:2016-04-25 20:35:01

标签: c macos getopt

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

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

显然,我需要在+的开头添加optstring,以便能够混合参数和选项,但根据https://www.gnu.org/software/gnulib/manual/html_node/getopt.html

你有解决方案吗?感谢。

1 个答案:

答案 0 :(得分:3)

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

例如,您在tftp ip port [-b blksize] src dest假装port的{​​{1}}为argv[2]。致电argv[0]

getopt(argc - 2, argv + 2, optstring)

这只是一个例子。您可以添加逻辑来确定是否存在命令或子命令。