Ruby 红宝石。数组中奇怪的argv[0]元素是spawn方法的参数

Ruby 红宝石。数组中奇怪的argv[0]元素是spawn方法的参数,ruby,process,Ruby,Process,众所周知,Ruby的内核#spawn方法执行指定的命令并返回其pid。该方法可以接受整个命令行作为单个参数、命令名和任意数量的命令参数,也可以接受数组,其中第一个元素是命令本身,根据,第二个元素是奇怪的变量argv[0]。事实证明,该变量与Ruby的ARGV[0]无关 这个变量是什么?里面有什么 谢谢 Debian GNU/Linux 6.0.2 Ruby 1.9.3-p0.我认为它根本不是一个变量 执行命令时(在一般情况下),参数进入argv[1]到argv[*n*]。执行的命令的名称可以在a

众所周知,Ruby的内核#spawn方法执行指定的命令并返回其pid。该方法可以接受整个命令行作为单个参数、命令名和任意数量的命令参数,也可以接受数组,其中第一个元素是命令本身,根据,第二个元素是奇怪的变量argv[0]。事实证明,该变量与Ruby的ARGV[0]无关

这个变量是什么?里面有什么

谢谢

Debian GNU/Linux 6.0.2


Ruby 1.9.3-p0.

我认为它根本不是一个变量

执行命令时(在一般情况下),参数进入
argv[1]
argv[*n*]
。执行的命令的名称可以在
argv[0]
中找到。(对于Ruby应用程序,它们将被放置在
ARGV
中,对于C应用程序,它们可以使用
argc
ARGV
参数访问
main

默认情况下,
argv[0]
将与启动的命令相同。但是,如果您使用以下表格:

exec(["alpha", "beta"])

程序
alpha
将被执行,但它是
argv[0]
将是
beta

谢谢你的回答,林迪。我想,我开始明白了。在C语言中有
argv[0]
“变量”。默认情况下,它包含当前程序的名称。使用Ruby的
spawn
我可以在C程序启动时更改该值。在这方面,我想到了另一个问题。我如何利用这个机会以及为什么可能需要它?一些程序根据给定的名称做不同的事情。例如,在某些系统
grep
上,如果以名称
egrep
启动,则其行为会有所不同。此外,第二个名称在列出进程时出现,因此您可以指定一个比实际可执行文件名更具描述性的名称。