我有一个C程序,它需要使用几个选项和一个非选项参数(即没有关联的选项字母)来调用,并使用getopt解析这些选项。例如,可以用以下方式调用它:
Example1:myProgram -a "aParam" -b "bParam" "xParam"
我一直在使用SLES10,这些选项可以按任何顺序工作。例如,非选项参数"xParam“可以放在第一位:
Example2:myProgram "xParam" -a "aParam" -b "bParam"
但是,当在SLES11中进行测试时,似乎getopt在到达非选项参数时就停止了处理,因此上面的示例2无法工作。
我已经阅读了getopt手册页,并看到这可能是相关的:
如果optstring的第一个字符是'+‘或者设置了环境变量POSIXLY_CORRECT,那么当遇到非选项参数时,选项处理就会停止。
我不确定SLES11是否默认设置POSIXLY_CORRECT。在SLES10中获取旧的SLES11 getopt行为的最佳方法是什么?
发布于 2012-11-15 20:46:12
结果是,默认情况下,它是重定向到_posix_getopt(),这导致了我前面描述的行为。
最后,我找到了可能的解决办法:
https://stackoverflow.com/questions/13290788
复制相似问题