Node.js - Processo
O objeto de processo é um objeto global e pode ser acessado de qualquer lugar. Existem vários métodos disponíveis em um objeto de processo.
Eventos de Processo
O objeto de processo é uma instância de EventEmitter e emite os seguintes eventos -
Sr. Não. | Descrição do Evento |
---|---|
1 | exit Emitido quando o processo está prestes a encerrar. Não há como evitar a saída do loop de eventos neste ponto e, quando todos os ouvintes de saída terminarem a execução, o processo será encerrado. |
2 | beforeExit Este evento é emitido quando o nó esvazia seu loop de eventos e não tem mais nada para agendar. Normalmente, o nó sai quando não há trabalho planejado, mas um ouvinte para 'beforeExit' pode fazer chamadas assíncronas e fazer com que o nó continue. |
3 | uncaughtException Emitido quando uma exceção borbulha de volta ao loop de eventos. Se um ouvinte for adicionado a essa exceção, a ação padrão (que é imprimir um rastreamento de pilha e sair) não ocorrerá. |
4 | Signal Events Emitido quando o processo recebe um sinal como SIGINT, SIGHUP, etc. |
Exemplo
Crie um arquivo js chamado main.js com o seguinte código para ouvir 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");
Agora execute o main.js para ver o resultado -
$ node main.js
Verifique a saída.
Program Ended
About to exit with code: 0
Códigos de Saída
O nó normalmente sai com um código de status 0 quando não há mais operações assíncronas pendentes. Existem outros códigos de saída que são descritos abaixo -
Código | Nome e Descrição |
---|---|
1 | Uncaught Fatal Exception Houve uma exceção não capturada e não foi tratada por um domínio ou um manipulador de eventos uncaughtException. |
2 | Unused reservado pela Bash para uso indevido incorporado. |
3 | Internal JavaScript Parse Error O código-fonte JavaScript interno no processo de bootstrap do Node causou um erro de análise. Isso é extremamente raro e geralmente só pode acontecer durante o desenvolvimento do próprio Node. |
4 | Internal JavaScript Evaluation Failure O código-fonte JavaScript interno no processo de bootstrap do Node falhou em retornar um valor de função quando avaliado. Isso é extremamente raro e geralmente só pode acontecer durante o desenvolvimento do próprio Node. |
5 | Fatal Error Houve um erro fatal irrecuperável no V8. Normalmente, uma mensagem será impressa em stderr com o prefixo FATAL ERROR. |
6 | Non-function Internal Exception Handler Houve uma exceção não capturada, mas a função do manipulador de exceção fatal interna foi de alguma forma definida como uma não função e não pôde ser chamada. |
7 | Internal Exception Handler Run-Time Failure Houve uma exceção não detectada e a própria função de manipulador de exceção fatal interna gerou um erro ao tentar manipulá-la. |
8 | Unused |
9 | Invalid Argument Uma opção desconhecida foi especificada ou uma opção que requer um valor foi fornecida sem um valor. |
10 | Internal JavaScript Run-Time Failure O código-fonte JavaScript interno no processo de bootstrap do Node gerou um erro quando a função de bootstrap foi chamada. Isso é extremamente raro e geralmente só pode acontecer durante o desenvolvimento do próprio Node. |
11 | Invalid Debug Argument As opções --debug e / ou --debug-brk foram definidas, mas um número de porta inválido foi escolhido. |
12 | Signal Exits Se o Node receber um sinal fatal, como SIGKILL ou SIGHUP, seu código de saída será 128 mais o valor do código do sinal. Esta é uma prática padrão do Unix, uma vez que os códigos de saída são definidos como inteiros de 7 bits e as saídas de sinal definem o bit de ordem superior e, em seguida, contêm o valor do código de sinal. |
Propriedades do Processo
O processo fornece muitas propriedades úteis para obter melhor controle sobre as interações do sistema.
Sr. Não. | Descrição da Propriedade |
---|---|
1 | stdout Um fluxo gravável para stdout. |
2 | stderr Um fluxo gravável para stderr. |
3 | stdin Um fluxo gravável para stdin. |
4 | argv Uma matriz contendo os argumentos da linha de comando. O primeiro elemento será 'nó', o segundo elemento será o nome do arquivo JavaScript. Os próximos elementos serão quaisquer argumentos adicionais de linha de comando. |
5 | execPath Este é o caminho absoluto do executável que iniciou o processo. |
6 | execArgv Este é o conjunto de opções de linha de comando específicas do nó do executável que iniciou o processo. |
7 | env Um objeto que contém o ambiente do usuário. |
8 | exitCode Um número que será o código de saída do processo, quando o processo sai normalmente ou é encerrado por meio de process.exit () sem especificar um código. |
9 | version Uma propriedade compilada que expõe NODE_VERSION. |
10 | versions Uma propriedade que expõe as strings de versão do nó e suas dependências. |
11 | config Um objeto contendo a representação JavaScript das opções de configuração que foram usadas para compilar o executável do nó atual. É igual ao arquivo "config.gypi" que foi produzido durante a execução do script ./configure. |
12 | pid O PID do processo. |
13 | title Getter / setter para definir o que é exibido em 'ps'. |
14 | arch Em qual arquitetura de processador você está executando: 'arm', 'ia32' ou 'x64'. |
15 | platform Em qual plataforma você está executando: 'darwin', 'freebsd', 'linux', 'sunos' ou 'win32' |
16 | mainModule Forma alternativa de recuperar require.main. A diferença é que, se o módulo principal for alterado no tempo de execução, require.main ainda pode se referir ao módulo principal original nos módulos que eram necessários antes da mudança ocorrer. Geralmente, é seguro presumir que os dois se referem ao mesmo módulo. |
Exemplo
Crie um arquivo js chamado main.js com o seguinte código -
// 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);
Agora execute o main.js para ver o resultado -
$ node main.js
Verifique a saída ao executar seu programa na máquina Linux -
Hello World!
0: node
1: /web/com/1427106219_25089/main.js
/usr/bin/node
linux
Referência de Métodos
O processo fornece muitos métodos úteis para obter melhor controle sobre as interações do sistema.
Sr. Não | Método e Descrição |
---|---|
1 | abort() Isso faz com que o nó emita um aborto. Isso faz com que o nó saia e gere um arquivo principal. |
2 | chdir(directory) Altera o diretório de trabalho atual do processo ou lança uma exceção se isso falhar. |
3 | cwd() Retorna o diretório de trabalho atual do processo. |
4 | exit([code]) Termina o processo com o código especificado. Se omitido, a saída usa o código de 'sucesso' 0. |
5 | getgid() Obtém a identidade do grupo do processo. Este é o id numérico do grupo, não o nome do grupo. Esta função está disponível apenas em plataformas POSIX (ou seja, não em Windows, Android). |
6 | setgid(id) Define a identidade do grupo do processo. (Veja setgid (2)). Ele aceita um ID numérico ou uma string de nome de grupo. Se um nome de grupo for especificado, este método bloqueia enquanto o resolve para um ID numérico. Essa função está disponível apenas em plataformas POSIX (ou seja, não em Windows, Android). |
7 | getuid() Obtém a identidade do usuário do processo. Este é o id numérico, não o nome de usuário. Esta função está disponível apenas em plataformas POSIX (ou seja, não em Windows, Android). |
8 | setuid(id) Define a identidade do usuário do processo (ver setgid (2)). Ele aceita um ID numérico ou uma string de nome de usuário. Se um nome de usuário for especificado, este método é bloqueado enquanto o resolve para um ID numérico. Esta função está disponível apenas em plataformas POSIX (ou seja, não em Windows, Android). |
9 | getgroups() Retorna uma matriz com os IDs de grupo suplementares. POSIX não especifica se o ID de grupo efetivo está incluído, mas node.js garante que sempre será. Esta função está disponível apenas em plataformas POSIX (ou seja, não Windows, Android). |
10 | setgroups(groups) Define os IDs de grupo suplementares. Esta é uma operação privilegiada, o que implica que você precisa estar na raiz ou ter o recurso CAP_SETGID. Esta função está disponível apenas em plataformas POSIX (ou seja, não Windows, Android). |
11 | initgroups(user, extra_group) Lê / etc / group e inicializa a lista de acesso do grupo, usando todos os grupos dos quais o usuário é membro. Esta é uma operação privilegiada, o que implica que você precisa estar na raiz ou ter o recurso CAP_SETGID. Esta função está disponível apenas em plataformas POSIX (ou seja, não Windows, Android). |
12 | kill(pid[, signal]) Envie um sinal para um processo. pid é o id do processo e signal é a string que descreve o sinal a ser enviado. Os nomes dos sinais são strings como 'SIGINT' ou 'SIGHUP'. Se omitido, o sinal será 'SIGTERM'. |
13 | memoryUsage() Retorna um objeto que descreve o uso de memória do processo Node medido em bytes. |
14 | nextTick(callback) Depois que a volta do loop de evento atual for concluída, chame a função de retorno de chamada. |
15 | umask([mask]) Define ou lê a máscara de criação do modo de arquivo do processo. Os processos filho herdam a máscara do processo pai. Retorna a máscara antiga se o argumento de máscara for fornecido; caso contrário, retorna a máscara atual. |
16 | uptime() Número de segundos em que o Node está em execução. |
17 | hrtime() Retorna o tempo real de alta resolução atual em uma matriz de tupla de [segundos, nanossegundos]. É relativo a um tempo arbitrário no passado. Não está relacionado à hora do dia e, portanto, não está sujeito ao desvio do relógio. O uso principal é para medir o desempenho entre intervalos. |
Exemplo
Crie um arquivo js chamado main.js com o seguinte código -
// 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());
Agora execute o main.js para ver o resultado -
$ node main.js
Verifique a saída ao executar seu programa na máquina Linux -
Current directory: /web/com/1427106219_25089
Current version: v0.10.33
{ rss: 11505664, heapTotal: 4083456, heapUsed: 2157704 }