我正在CentOS linux中创建一个C程序,我无法让getopt识别命令行中的参数。
我得到的错误是“未找到命令”我使用gcc编译文件并使用./testFile执行编译命令是:gcc mathwait.c -o测试文件,然后是./测试文件
谢谢你的帮助!
void help()
{
printf("The options for this program are:\n ");
printf("-h - walkthrough of options and program intent\n ");
printf("This program forks off a single child process to do a task\n ");
printf("The main process will wait for it to complete and then do\n");
printf("some additional work\n");
}
int main(int argc, char**argv)
{
int option;
while((option = getopt(argc, argv, "h")) != -1)
{
switch(option)
{
case 'h':
help();
break;
default:
help();
break;
}
}
}
2条答案
按热度按时间ftf50wuq1#
1.缺少两个头文件:
并且缺少一个return语句:
如果没有更多的选项字符,getopt()将返回-1
这意味着如果你不提供任何参数,
getopt()
将返回-1,你的while()
循环将不会被执行,你的程序将退出。如果你用-h
调用你的程序,第一个case将被执行,否则(意味着任何其他参数)default
将被执行。1.我假设这是测试代码,否则当您在所有情况下都做同样的事情时,没有必要使用开关。
1.格式对于可读性很重要:
ulydmbyx2#
你说:
编译命令为:
gcc mathwait.c -o testFile
,然后是./testFile
如果运行
./testFile
,则未提供任何参数。运行:现在你提供了一个
getopt()
要处理的选项。如果你运行./testFile -x
,你会得到一个关于无法识别的'x'
选项的消息,然后是来自help()
函数的信息。