[英]What exactly do these arguments mean in linux?
我有一个用 C 编写的程序,我应该在 linux 上运行它的命令如下所示:
./program --something X Y
这到底是什么意思呢? 我认为 XY 将是参数,所以argc[2]
将是X
而argc[3]
将是Y
?
但是--something
呢?
非常感谢!
C 运行时不区分任何参数,无论它们是否以--
开头。 所以你有了,
argv[0] = "./program"
argv[1] = "--something"
argv[2] = "X"
argv[3] = "Y"
argv[4] = NULL
是您的程序为这些值赋予意义。
命令本身之后的任何内容都将到达argv
:
argv[1]
是--something
, argv[2]
是X
, argv[3]
是Y
。 遵循 *unix 约定,这意味着您的程序有一个名为“something”的参数,其值为“X”,而“Y”是该程序应该应用的参数 - 但这完全取决于您对程序的实现.
就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 的 argparse或 Java 中的 Apache Commons CLI)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.