我有一个用C编写的程序,我应该在linux上运行它的命令看起来像这样:
./program --something X Y
究竟是什么意思?我认为X Y将是argc[2]
X
和argc[3]
将是Y
的论点?
但是--something
呢?
非常感谢!
答案 0 :(得分:3)
C运行时不会区分任何参数,无论它们是否以--
开头。所以你有,
argv[0] = "./program"
argv[1] = "--something"
argv[2] = "X"
argv[3] = "Y"
argv[4] = NULL
这是你的程序为这些值赋予意义。
答案 1 :(得分:0)
遵循命令本身的任何内容都将转到argv
:
argv[1]
为--something
,argv[2]
为X
,argv[3]
为Y
。遵循* unix约定,这意味着你的程序有一个名为“something”的参数,值为“X”,“Y”是程序应该应用的参数 - 但这完全取决于你的程序实现
答案 2 :(得分:0)
就argc
和argv
而言,这些论点与其他论点没有什么不同。
使它们与众不同的是,许多Linux工具(但不仅仅是)使用getopt
来更容易理解这些选项。当您需要多个可能的选项(或者不记得它们的用途)时,这尤其有用。
您通常可以选择多种选择,包括和不使用参数。
惯例也是让--help
打印出所有可用选项的摘要。
例如,在man
的帮助下:
$ man --help
Usage: man [OPTION...] [SECTION] PAGE...
-C, --config-file=FILE use this user configuration file
-d, --debug emit debugging messages
-D, --default reset all options to their default values
--warnings[=WARNINGS] enable warnings from groff
在此特定示例中,您可以使用-d
或--debug
打开调试功能。 getopt
(或类似)用于将-d
或--debug
解析为有意义的内容。 -C
或--config-file
也是等价的,但期待一个论点。
在其他语言中有类似的等价物(例如Python's argparse或Java中的Apache Commons CLI)。