2010-02-01 25 views
11
irb(main):002:0> $$ 
=> 5052 

Was bedeutet $$ in Ruby und How/Wo zu verwenden?

Antwort

18

$$ ist die process ID. Es ist so benannt, um Perl zu folgen, die wiederum der Bourne-Shell folgte. beide benutzen auch $$ in der gleichen Weise.

+1

@Wayne: Bitte zögern Sie nicht, Ihre eigene Antwort zu den 'englischen' Synonymen zu schreiben, und vielleicht verlinken Sie sie von einem Kommentar. :-) –

+1

Wenn du meine Bearbeitung abgelehnt hast, weil es falsch war oder deine Antwort verschlechtert hat, akzeptiere ich deine Ablehnung (aber es wäre gut zu wissen, warum). Wenn Sie es abgelehnt haben, weil Sie Ihre Antwort für sich alleine halten, dann: http://meta.stackexchange.com/a/15843/141929 –

+0

@WayneConrad Wirklich, mehr, weil ich "Englisch" als irgendetwas anderes nicht mag. Ein Teil meiner Abneigung ist, weil: 1. es ist nur in 'stdlib' und nicht in' core', und selten erwähnt oder verwendet, und 2. 'Englisch's Nebenwirkungen in Perl (es läutert' $ \ '', ' $ & ', and' & '', [mit Performance-Implikationen] (http://perldoc.perl.org/English.html#PERFORMANCE)) hat mich komplett davon abgebracht. (Zugegeben, Ruby ist nicht Perl, aber alte Gewohnheiten sterben schwer.) –

5

Es ist die Prozess-ID des Ruby-Interpreters. $ ist ein Präfix für globale Variablen, siehe here für eine Liste.

+0

+1 für die Liste – AJP

7

This scheint wie eine gute Referenz für solche Sachen ... hat eine Menge symbolische Güte.

+0

+2 für bessere Liste! – AJP

1

Dies ist die Prozess-ID des aktuellen Ruby-Prozesses. Schreibgeschützt

2
pipe = IO.popen("") 
if pipe 
    STDERR.puts "In parent, child pid is #{pipe.pid}" 
else 
    STDERR.puts "In child, pid is #{$$}" 
end 

Dieses Beispiel zeigt, wie die Prozess-ID verwendet werden kann. Die Prozess-ID ist Teil von Ausführungsumgebungsvariablen (Teil von vordefinierten Variablen).