我有一个 C 程序,它期望使用多个选项和 1 个非选项参数(即没有关联的选项字母)调用,并使用 getopt 解析这些选项。例如,它可以被调用:
示例 1:
myProgram -a "aParam" -b "bParam" "xParam"
我一直在使用 SLES10,并且这些选项按任何顺序工作。例如,非选项参数“xParam”可以先出现:
示例 2:
myProgram "xParam" -a "aParam" -b "bParam"
但是,在 SLES11 中进行测试时,似乎 getopt 一到达非选项参数就停止处理,因此上面的示例 2 不起作用。
我已经阅读了 getopt 手册页,发现这可能是相关的:
如果 optstring 的第一个字符是 '+' 或设置了环境变量 POSIXLY_CORRECT,则一旦遇到非选项参数,选项处理就会停止。
我不确定 SLES11 是否默认设置 POSIXLY_CORRECT。在 SLES11 中获得旧的 SLES10 getopt 行为的最佳方法是什么?