我尝试使用字符串标记并在NULL终止的main()
数组中存储标记来模拟正常函数的char*
函数行为。
除了getopt()
之外,每件事都很好。它不会重新排列argv[0]
因为它期望第一个参数是程序名。但是对于我的函数,argv[0]
不是程序名。我想让getopt()
重新排列argv[0]
(非选项)。我怎么做?
答案 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()。