【发布时间】:2012-02-17 09:46:48
【问题描述】:
如何在 UNIX 中对 C++ 上的命令行参数进行错误检查?例如,如果您不输入任何参数,您将如何打印出错误消息而不仅仅是获得分段错误?
【问题讨论】:
-
What have you tried? 请向我们展示一个您遇到分段错误的示例?
标签: c++ unix command-line parameters
如何在 UNIX 中对 C++ 上的命令行参数进行错误检查?例如,如果您不输入任何参数,您将如何打印出错误消息而不仅仅是获得分段错误?
【问题讨论】:
标签: c++ unix command-line parameters
if (argc<2)
{
fprintf(stderr, "This program requires more parameters\n");
return -1;
}
【讨论】:
如果argc不大于1,则用户没有提供命令行参数:
#include <stdio.h>
int main (int argc, char *argv[])
{
if (argc < 2)
{
printf("The command had no arguments.\n");
}
return 0;
}
【讨论】:
argv[0] 并不总是执行程序的名称。如果你使用execl,它可以是任何东西,包括NULL。另见stackoverflow.com/a/275317/79455
argv[0] 是程序的名称,而不是强制要求。如果您使用exec 系列函数调用某个程序,您可以随意制作argv[0]。有一些强有力的安全理由不将名称(尤其是路径)传递为 argv[0]。
使用getopt。
【讨论】:
强烈推荐使用 boost program_option 库进行命令行解析。
【讨论】: