2013-03-21 11 views
8

W książce uczyć rubin w przykry sposób znalazłem składni, aby wyjść z programu:Dlaczego przekazujemy 0 jako parametr "wyjścia"?

Process.exit(0) 

Dlaczego parametr 0 były przekazywane w sposób exit tutaj mimo to działa jeśli Mijam kolejny liczba całkowita lub nie przekazuje żadnego parametru? Jakie jest znaczenie 0?

+0

Parametr przekazany do EXIT (w szorstkiej sensie) "wartość zwrotu" programu. –

+1

Tak jak w odpowiedzi @ kamituel, jest to w rzeczywistości więcej informacji o tym, jak działają skrypty powłoki (lub inne programy językowe), a nie o wewnętrznych Ruby. – sawa

Odpowiedz

12

To jest "kod wyjścia".

Kod ten zjazd ma szczególne znaczenie w niektórych przypadkach (patrz na przykład http://tldp.org/LDP/abs/html/exitcodes.html)

można przekazać co chcesz, jeśli kod nie zostanie złapany po, to nie będzie miało żadnych skutków.

Tutaj "0" oznacza "Wszystko działa poprawnie!"

+1

"0 jest, bo nie mam nic szczególnego do powiedzenia!". Powiedziałbym "wszystko poszło dobrze". – tokland

+1

@tokland Pewnie, masz rację. Poprawiam swój post. – pierallard

6

Dzieje się tak dlatego, że gdy proces potomny zostanie uruchomiony (proces potomny będzie w tym przypadku skryptem Ruby), proces nadrzędny (powłoka, system itp.) Może oczekiwać na zakończenie procesu.

Po zakończeniu można powiedzieć rodzicowi, jaki jest stan jego wykonania. Zero zwykle oznacza, że ​​wykonanie zostało zakończone sukcesem i zakończone bez żadnych błędów.

Jeśli, na przykład, uruchomić skrypt z powłoki bash, a to nazwać Process.exit(0), można sprawdzić, czy udało się za pomocą $? zmiennej:

$ ./my_ruby.script  # calls Process.exit(0) 
$ echo $? 
0       # ok, script finished with no errors. 
Powiązane problemy