使getopt()进程argv [0]

时间:2013-08-12 10:00:26

标签: c getopt

我尝试使用字符串标记并在NULL终止的main()数组中存储标记来模拟正常函数的char*函数行为。

除了getopt()之外,每件事都很好。它不会重新排列argv[0]因为它期望第一个参数是程序名。但是对于我的函数,argv[0]不是程序名。我想让getopt()重新排列argv[0](非选项)。我怎么做?

3 个答案:

答案 0 :(得分:2)

getopt(3)使用全局变量optind(选项索引)通过argv跟踪其进度并将其初始化为1.尝试在阅读选项之前设置optind = 0。< / p>

答案 1 :(得分:0)

尝试使用

c = getopt(argc + 1, argv - 1, "xyz")

编辑:正如下面所指出的,这是一个黑客但是我有兴趣看到一台机器不能正常工作。

答案 2 :(得分:0)

虽然黑客@Tom Tanner建议在某些系统上工作,但它没有编译为我应该让它工作的目标。我发现的另一个工作是用一个虚拟字符串替换我的argv []数组中的第一个参数,并使用getopt()。