Node.js - Process

L'oggetto del processo è un oggetto globale ed è possibile accedervi da qualsiasi luogo. Sono disponibili diversi metodi in un oggetto di processo.

Eventi di processo

L'oggetto del processo è un'istanza di EventEmitter ed emette i seguenti eventi:

Sr.No. Descrizione dell'evento
1

exit

Emesso quando il processo sta per terminare. Non c'è modo di impedire l'uscita dal ciclo di eventi a questo punto e una volta che tutti i listener di uscita hanno terminato l'esecuzione, il processo terminerà.

2

beforeExit

Questo evento viene emesso quando il nodo svuota il suo ciclo di eventi e non ha nient'altro da pianificare. Normalmente, il nodo esce quando non c'è lavoro pianificato, ma un listener per "beforeExit" può effettuare chiamate asincrone e fare in modo che il nodo continui.

3

uncaughtException

Emesso quando un'eccezione torna al ciclo di eventi. Se viene aggiunto un listener per questa eccezione, l'azione predefinita (che è stampare una traccia dello stack ed uscire) non verrà eseguita.

4

Signal Events

Emesso quando i processi ricevono un segnale come SIGINT, SIGHUP, ecc.

Esempio

Crea un file js denominato main.js con il seguente codice per l'ascolto exit evento -

process.on('exit', function(code) {
   // Following code will never execute.
   setTimeout(function() {
      console.log("This will not run");
   }, 0);
  
   console.log('About to exit with code:', code);
});
console.log("Program Ended");

Ora esegui main.js per vedere il risultato -

$ node main.js

Verifica l'output.

Program Ended
About to exit with code: 0

Codici di uscita

Il nodo normalmente esce con un codice di stato 0 quando non sono più in sospeso operazioni asincrone. Esistono altri codici di uscita descritti di seguito:

Codice Nome e descrizione
1

Uncaught Fatal Exception

Si è verificata un'eccezione non rilevata e non è stata gestita da un dominio o da un gestore di eventi uncaughtException.

2

Unused

riservato da Bash per uso improprio incorporato.

3

Internal JavaScript Parse Error

Il codice sorgente JavaScript interno al processo di bootstrap di Node ha causato un errore di analisi. Questo è estremamente raro e generalmente può accadere solo durante lo sviluppo di Node stesso.

4

Internal JavaScript Evaluation Failure

Il codice sorgente JavaScript interno al processo di bootstrap di Node non è riuscito a restituire un valore di funzione durante la valutazione. Questo è estremamente raro e generalmente può accadere solo durante lo sviluppo di Node stesso.

5

Fatal Error

Si è verificato un errore irreversibile irreversibile in V8. In genere, un messaggio verrà stampato su stderr con il prefisso FATAL ERROR.

6

Non-function Internal Exception Handler

C'era un'eccezione non rilevata, ma la funzione del gestore di eccezioni irreversibili interne era in qualche modo impostata su una non funzione e non poteva essere chiamata.

7

Internal Exception Handler Run-Time Failure

Si è verificata un'eccezione non rilevata e la stessa funzione di gestione delle eccezioni irreversibili interna ha generato un errore durante il tentativo di gestirla.

8

Unused

9

Invalid Argument

È stata specificata un'opzione sconosciuta oppure è stata fornita un'opzione che richiede un valore senza un valore.

10

Internal JavaScript Run-Time Failure

Il codice sorgente JavaScript interno al processo di bootstrap di Node ha generato un errore quando è stata chiamata la funzione di bootstrap. Questo è estremamente raro e generalmente può accadere solo durante lo sviluppo di Node stesso.

11

Invalid Debug Argument

Le opzioni --debug e / o --debug-brk sono state impostate, ma è stato scelto un numero di porta non valido.

12

Signal Exits

Se il nodo riceve un segnale fatale come SIGKILL o SIGHUP, il suo codice di uscita sarà 128 più il valore del codice del segnale. Questa è una pratica Unix standard, poiché i codici di uscita sono definiti come numeri interi a 7 bit e le uscite di segnale impostano il bit di ordine superiore e quindi contengono il valore del codice del segnale.

Proprietà del processo

Process fornisce molte proprietà utili per ottenere un migliore controllo sulle interazioni del sistema.

Sr.No. Proprietà e descrizione
1

stdout

Un flusso scrivibile su stdout.

2

stderr

Un flusso scrivibile su stderr.

3

stdin

Un flusso scrivibile in stdin.

4

argv

Un array contenente gli argomenti della riga di comando. Il primo elemento sarà "nodo", il secondo sarà il nome del file JavaScript. Gli elementi successivi saranno eventuali argomenti aggiuntivi della riga di comando.

5

execPath

Questo è il percorso assoluto dell'eseguibile che ha avviato il processo.

6

execArgv

Questo è il set di opzioni della riga di comando specifiche del nodo dall'eseguibile che ha avviato il processo.

7

env

Un oggetto contenente l'ambiente utente.

8

exitCode

Un numero che sarà il codice di uscita del processo, quando il processo esce normalmente o viene chiuso tramite process.exit () senza specificare un codice.

9

version

Una proprietà compilata che espone NODE_VERSION.

10

versions

Una proprietà che espone le stringhe di versione di node e le sue dipendenze.

11

config

Un oggetto contenente la rappresentazione JavaScript delle opzioni di configurazione utilizzate per compilare l'eseguibile del nodo corrente. È lo stesso del file "config.gypi" che è stato prodotto durante l'esecuzione dello script ./configure.

12

pid

Il PID del processo.

13

title

Getter / setter per impostare ciò che viene visualizzato in "ps".

14

arch

Quale architettura del processore stai utilizzando: "arm", "ia32" o "x64".

15

platform

Su quale piattaforma stai girando: "darwin", "freebsd", "linux", "sunos" o "win32"

16

mainModule

Modo alternativo per recuperare require.main. La differenza è che se il modulo principale cambia in fase di esecuzione, require.main potrebbe comunque fare riferimento al modulo principale originale nei moduli che erano richiesti prima che si verificasse la modifica. In genere è lecito ritenere che i due si riferiscano allo stesso modulo.

Esempio

Crea un file js denominato main.js con il codice seguente:

// Printing to console
process.stdout.write("Hello World!" + "\n");

// Reading passed parameter
process.argv.forEach(function(val, index, array) {
   console.log(index + ': ' + val);
});

// Getting executable path
console.log(process.execPath);

// Platform Information 
console.log(process.platform);

Ora esegui main.js per vedere il risultato -

$ node main.js

Verifica l'output durante l'esecuzione del programma su macchina Linux -

Hello World!
0: node
1: /web/com/1427106219_25089/main.js
/usr/bin/node
linux

Riferimento ai metodi

Process fornisce molti metodi utili per ottenere un migliore controllo sulle interazioni del sistema.

Suor n Metodo e descrizione
1

abort()

Fa sì che il nodo emetta un interruzione. Fa uscire il nodo e genera un file core.

2

chdir(directory)

Modifica la directory di lavoro corrente del processo o genera un'eccezione se fallisce.

3

cwd()

Restituisce la directory di lavoro corrente del processo.

4

exit([code])

Termina il processo con il codice specificato. Se omesso, exit utilizza il codice di "successo" 0.

5

getgid()

Ottiene l'identità di gruppo del processo. Questo è l'ID numerico del gruppo, non il nome del gruppo. Questa funzione è disponibile solo per piattaforme POSIX (cioè non Windows, Android).

6

setgid(id)

Imposta l'identità di gruppo del processo. (Vedi setgid (2)). Accetta un ID numerico o una stringa del nome del gruppo. Se viene specificato un nome di gruppo, questo metodo si blocca durante la risoluzione in un ID numerico. Questa funzione è disponibile solo per piattaforme POSIX (cioè non Windows, Android).

7

getuid()

Ottiene l'identità dell'utente del processo. Questo è l'id numerico, non il nome utente. Questa funzione è disponibile solo su piattaforme POSIX (cioè non Windows, Android).

8

setuid(id)

Imposta l'identità dell'utente del processo (vedere setgid (2)). Accetta un ID numerico o una stringa di nome utente. Se viene specificato un nome utente, questo metodo si blocca durante la risoluzione in un ID numerico. Questa funzione è disponibile solo per piattaforme POSIX (cioè non Windows, Android).

9

getgroups()

Restituisce un array con gli ID di gruppo supplementari. POSIX lascia non specificato se è incluso l'ID gruppo effettivo, ma node.js garantisce che lo sia sempre. Questa funzione è disponibile solo su piattaforme POSIX (cioè non Windows, Android).

10

setgroups(groups)

Imposta gli ID di gruppo supplementari. Questa è un'operazione privilegiata, il che implica che devi essere alla radice o avere la capacità CAP_SETGID. Questa funzione è disponibile solo su piattaforme POSIX (cioè non Windows, Android).

11

initgroups(user, extra_group)

Legge / etc / group e inizializza l'elenco di accesso del gruppo, utilizzando tutti i gruppi di cui l'utente è membro. Questa è un'operazione privilegiata, il che implica che devi essere alla radice o avere la capacità CAP_SETGID. Questa funzione è disponibile solo su piattaforme POSIX (cioè non Windows, Android).

12

kill(pid[, signal])

Invia un segnale a un processo. pid è l'id del processo e il segnale è la stringa che descrive il segnale da inviare. I nomi dei segnali sono stringhe come "SIGINT" o "SIGHUP". Se omesso, il segnale sarà "SIGTERM".

13

memoryUsage()

Restituisce un oggetto che descrive l'utilizzo della memoria del processo Node misurato in byte.

14

nextTick(callback)

Una volta completato il ciclo di eventi corrente, chiamare la funzione di callback.

15

umask([mask])

Imposta o legge la maschera di creazione della modalità file del processo. I processi figlio ereditano la maschera dal processo padre. Restituisce la vecchia maschera se viene fornito l'argomento mask, altrimenti restituisce la maschera corrente.

16

uptime()

Numero di secondi di esecuzione del nodo.

17

hrtime()

Restituisce il tempo reale ad alta risoluzione corrente in una tupla Array di [secondi, nanosecondi]. È relativo a un tempo arbitrario nel passato. Non è correlato all'ora del giorno e quindi non è soggetto a deriva dell'orologio. L'utilizzo principale è per misurare le prestazioni tra gli intervalli.

Esempio

Crea un file js denominato main.js con il codice seguente:

// Print the current directory
console.log('Current directory: ' + process.cwd());

// Print the process version
console.log('Current version: ' + process.version);

// Print the memory usage
console.log(process.memoryUsage());

Ora esegui main.js per vedere il risultato -

$ node main.js

Verifica l'output durante l'esecuzione del programma su macchina Linux -

Current directory: /web/com/1427106219_25089
Current version: v0.10.33
{ rss: 11505664, heapTotal: 4083456, heapUsed: 2157704 }