为什么将程序名称作为参数传递给main?

时间:2010-11-20 20:43:34

标签: c arguments

如果我打电话:

./program hello world

然后:

argc would be 3.
argv[0] would be "./program".
argv[1] would be "hello".
argv[2] would be "world".

将“./program”作为参数传递的目的是什么?事实上,它根本不是一个论据!

3 个答案:

答案 0 :(得分:4)

您可以创建指向同一二进制文件的符号链接。根据您使用的链接,您将获得不同的行为。 Busybox就是一个例子。

答案 1 :(得分:2)

一个用途是让应用程序可以知道它是如何被调用的(基本上,它自己的名字是什么)。

请注意argv[]中显示的内容是实现定义的。例如,如果您使用其中一个UNIX exec()函数,则内容可以是您喜欢的任何内容。

答案 2 :(得分:2)

...你可以创建一个很好的帮助函数,在调用时显示帮助文本,当可执行文件的名称发生变化时不需要更新。