2013-03-21 1 views
8

Nel libro imparare rubino nel modo più difficile, ho trovato una sintassi per uscire dal programma:Perché passiamo a 0 come parametro su "exit"?

Process.exit(0) 

Perché il parametro 0 viene passato nel metodo exit qui anche se funziona, se mi passa un altro intero o non passare alcun parametro? Qual è il significato di 0?

+0

Il parametro passato per uscire è (in un certo senso ruvido) il "valore di ritorno" del programma. –

+1

Come nella risposta di @ kamituel, si tratta in realtà di più su come funzionano gli script di shell (o altri linguaggi di programmazione) piuttosto che sugli interni di Ruby. – sawa

risposta

12

Questo è un "codice di uscita".

Questo codice di uscita ha un significato speciale, in alcuni casi (vedi ad esempio http://tldp.org/LDP/abs/html/exitcodes.html)

È possibile passare quello che vuoi, se il codice non viene catturato dopo, questo non avrà effetti.

Qui '0' è per 'Tutto funziona bene!'

+1

"0 è per non ho nulla di particolare da dire!". Direi che "tutto è andato bene". – tokland

+1

@tokland Certo, hai ragione. Correggo il mio post. – pierallard

6

È perché all'avvio di un processo figlio (processo figlio essendo lo script Ruby in quel caso) il processo genitore (shell, sistema, ecc.) Può attendere il completamento.

Una volta terminato, può comunicare al processo padre qual è lo stato della sua esecuzione. Zero di solito significa che l'esecuzione è avvenuta con successo e completata senza errori.

Se si, su esempio, esegue lo script dalla shell bash, e sarà chiamata Process.exit(0), si potrebbe verificare se è riuscito utilizzando $? variabile:

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