getopt() 如何知道何时停止?
How does getopt() know when to stop?
我有一些看起来像这样的东西:
while((ch = getopt(argc, argv, "d:t")) != EOF) { ... }
我可能会这样调用函数:
./foo -d "my house" -t some more thoughts
getopt() 以某种方式知道 -d 和 -t 是选项,但在那之后它知道 'some' 'more' 和 'thoughts' 是稍后使用的。 getopt() 寻找什么来知道它已完成处理 args?什么是 EOF?
如评论中所述,将 EOF
与 getopt()
一起使用是完全错误的(并且 "happens" 在将 -1
用于 EOF
的系统上工作) .使用 -1
.
关于你的另一个问题:
What does getopt() look for to know that it's done processing args?
答案很简单。 getopt()
要求 在调用您的程序时使用选项 在 其他参数之前。所以它会在第一次找到
时停止
- 或者
NULL
(表示 argv[]
结束)或者当达到 argc
时(取决于实现)或者
- 一个不以
-
开头且未被配置字符串中的 :
使用的参数。
我有一些看起来像这样的东西:
while((ch = getopt(argc, argv, "d:t")) != EOF) { ... }
我可能会这样调用函数:
./foo -d "my house" -t some more thoughts
getopt() 以某种方式知道 -d 和 -t 是选项,但在那之后它知道 'some' 'more' 和 'thoughts' 是稍后使用的。 getopt() 寻找什么来知道它已完成处理 args?什么是 EOF?
如评论中所述,将 EOF
与 getopt()
一起使用是完全错误的(并且 "happens" 在将 -1
用于 EOF
的系统上工作) .使用 -1
.
关于你的另一个问题:
What does getopt() look for to know that it's done processing args?
答案很简单。 getopt()
要求 在调用您的程序时使用选项 在 其他参数之前。所以它会在第一次找到
- 或者
NULL
(表示argv[]
结束)或者当达到argc
时(取决于实现)或者 - 一个不以
-
开头且未被配置字符串中的:
使用的参数。