SlideShare uma empresa Scribd logo
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
Process
Um processo é uma instância de um
determinado programa em execução no
sistema operacional.
https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
Node.js - #5 - Process - Rodrigo Branas
Exibindo as variáveis globais
global.js
1. Object.keys(global).forEach(function (value) {
2. console.log(value);
3. });
Node.js - #5 - Process - Rodrigo Branas
Exibindo as propriedades
global_process.js
1. Object.keys(process).forEach(function (value) {
2. console.log(value);
3. });
Node.js - #5 - Process - Rodrigo Branas
Obtendo argumentos da linha de comando
process.js
1. process.argv.forEach(function (value) {
2. console.log(value);
3. });
Node.js - #5 - Process - Rodrigo Branas
Exibindo informações do processo
Exibindo informações do processo
process.js
1. var help = require('./help');
2. var options = process.argv.slice(2);
3. if (options.length < 1) {
4. help.showOptions();
5. return;
6. }
7. var option = options[0];
8. switch(option) {
9. case 'a':
10. console.log('pid: ' + process.pid);
11. break;
12. case 'b':
13. console.log('title: ' + process.title);
14. break;
15. case 'c':
16. console.log('arch: ' + process.arch);
17. break;
18. case 'd':
19. console.log('platform: ' + process.platform);
20. break;
21. default:
22. help.showOptions();
23. }
Opções disponíveis
help.js
1. var help = [
2. 'a) pid',
3. 'b) title',
4. 'c) arch',
5. 'd) platform'
6. ];
8. exports.showOptions = function () {
9. help.forEach(function (value) {
10. console.log(value);
11. });
12. };
Node.js - #5 - Process - Rodrigo Branas
Standard Streams
São canais de comunicação, utilizados
para realizar operações de entrada e
saída, entre o programa e o ambiente
onde ele está sendo executado.
Input Output Error
Utilizando stdout
console.js
1. var konsole = {
2. log: function (msg) {
3. process.stdout.write(msg + 'n');
4. }
5. };
6. konsole.log('A');
Node.js - #5 - Process - Rodrigo Branas
Utilizando stdout e stderr
console.js
1. var konsole = {
2. log: function (msg) {
3. process.stdout.write(msg + 'n');
4. },
5. error: function (msg) {
6. process.stderr.write(msg + 'n');
7. }
8. };
9. konsole.log('A');
10. konsole.error('B');
Node.js - #5 - Process - Rodrigo Branas
Qual é a diferença entre output e error?
Eles podem ser tratados e
redirecionados de formas diferentes
Utilizando stdout e stderr
console.js
1. var konsole = {
2. log: function (msg) {
3. process.stdout.write(msg + 'n');
4. },
5. error: function (msg) {
6. process.stderr.write(msg + 'n');
7. }
8. };
9. konsole.log('A');
10. konsole.error('B');
Node.js - #5 - Process - Rodrigo Branas
Podemos ainda verificar com quem
estamos interagindo, se é um TTY, ou
teletype, o terminal ou o teclado, ou PTY,
ou pseudo-teletype, que se refere a
algum tipo de software como telnet, ssh
ou xterm.
Utilizando stdout e stderr com isTTY
console.js
1. var konsole = {
2. log: function (msg) {
3. process.stdout.write(msg + 'n');
4. },
5. error: function (msg) {
6. process.stderr.write(msg + 'n');
7. }
8. };
9. konsole.log('A TTY:' + !!process.stdout.isTTY);
10. konsole.error('B TTY:' + !!process.stderr.isTTY);
Node.js - #5 - Process - Rodrigo Branas
Utilizando stdin para ler o teclado
keyboard.js
1. exports.onReadable = function (callback) {
2. process.stdin.on('readable', function () {
3. var chunk = process.stdin.read();
4. if (chunk !== null) {
5. var data = chunk.toString().replace(/n/, '');
6. callback(data);
7. }
8. });
9. };
Exibindo informações do processo
process_with_keyboard.js
1. var keyboard = require('./keyboard');
2. var help = require('./help');
4. keyboard.onReadable(function (option) {
5. switch(option) {
6. case 'a':
7. console.log('pid: ' + process.pid);
8. break;
9. case 'b':
10. console.log('title: ' + process.title);
11. break;
12. case 'c':
13. console.log('arch: ' + process.arch);
14. break;
15. case 'd':
16. console.log('platform: ' + process.platform);
17. break;
18. default:
19. help.showOptions();
20. }
21. });
Node.js - #5 - Process - Rodrigo Branas
Abortando o processo
process_with_keyboard.js
1. var keyboard = require('./keyboard');
2. var help = require('./help');
4. keyboard.onReadable(function (option) {
5. switch(option) {
6. case 'a':
7. console.log('pid: ' + process.pid);
8. break;
9. case 'b':
10. console.log('title: ' + process.title);
11. break;
12. case 'c':
13. console.log('arch: ' + process.arch);
14. break;
15. case 'd':
16. console.log('platform: ' + process.platform);
17. break;
18. case 'q':
19. process.exit();
20. default:
21. help.showOptions();
22. }
23. });
Node.js - #5 - Process - Rodrigo Branas
Exibindo outras informações do processo
process_with_keyboard.js
1. ...
2. switch(option) {
3. case 'a':
4. console.log('pid: ' + process.pid);
5. break;
6. case 'b':
7. console.log('title: ' + process.title);
8. break;
9. case 'c':
10. console.log('arch: ' + process.arch);
11. break;
12. case 'd':
13. console.log('platform: ' + process.platform);
14. break;
15. case 'e':
16. console.dir(process.env);
17. break;
18. case 'u':
19. console.log('uptime: ' + process.uptime());
20. break;
21. case 'v':
22. console.dir(process.versions);
23. break;
24. case 'q':
25. process.exit();
26. default:
27. help.showOptions();
28. }
Node.js - #5 - Process - Rodrigo Branas
Tratando eventos (exit)
process_with_keyboard.js
1. ...
2. process.on('exit', function () {
3. console.log('bye');
4. });
Node.js - #5 - Process - Rodrigo Branas
Tratando eventos (uncaughtException)
process_with_keyboard.js
1. ...
2. process.on('uncaughtException', function () {
3. console.log('error');
4. });
Trate as exceções adequadamente
Rodrigo Branas
Agile Code: http://www.agilecode.com.br
Twitter: @rodrigobranas
SlideShare: http://www.slideshare.com/rodrigobranas
YouTube: http://www.youtube.com/rodrigobranas
LinkedIn: http://br.linkedin.com/in/rodrigobranas
+Plus: https://plus.google.com/+RodrigoBranas
GitHub: http://www.github.com/rodrigobranas

Mais conteúdo relacionado

PDF
Node.js - #3 - Global Objects - Rodrigo Branas
PDF
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
PDF
Node.js - #4 - Timers - Rodrigo Branas
PPT
Spock Framework
PPT
Spock Framework 2
PDF
JavaScript Hacks
PDF
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
PDF
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
Spock Framework
Spock Framework 2
JavaScript Hacks
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor

Mais procurados (20)

PPTX
Threads tasks e o tal do thread pool
PDF
Conteudo curso php
PDF
TDC2016SP - Trilha Node.Js
PPTX
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
PDF
Curso de Node JS Básico
PDF
PHP e Mysql - DELETE
PPT
Mobileconf dicas-android
PDF
Funcionamento interno do node.js e boas práticas
PDF
JavaScript - De verdade
PDF
Python e bancos NoSQL
PDF
Implementação em ActionScript 3 do Protocolo IRC
PDF
Acessando o MySql com o Python
PPTX
Node.js para desenvolvedores .NET
PPTX
Coroutines tech summit
PDF
Dicas e Truques TypeScript
PDF
Let's log!
PDF
Introdução a worker
PDF
PHP fora da Web
PDF
Doctrine2 Seminário PHP
KEY
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Threads tasks e o tal do thread pool
Conteudo curso php
TDC2016SP - Trilha Node.Js
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
Curso de Node JS Básico
PHP e Mysql - DELETE
Mobileconf dicas-android
Funcionamento interno do node.js e boas práticas
JavaScript - De verdade
Python e bancos NoSQL
Implementação em ActionScript 3 do Protocolo IRC
Acessando o MySql com o Python
Node.js para desenvolvedores .NET
Coroutines tech summit
Dicas e Truques TypeScript
Let's log!
Introdução a worker
PHP fora da Web
Doctrine2 Seminário PHP
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Anúncio

Destaque (20)

PDF
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
PDF
Node.js - #6 - Core Modules - net - Rodrigo Branas
PDF
Node.js - #1 - Introdução - Rodrigo Branas
PPTX
A evolução do AngularJS
PPTX
Utilizando diretivas com AngularJS
PPTX
Construindo Diretivas com AngularJS
PPTX
Criando serviços com AngularJS
PDF
HTTP Interceptors com AngularJS
PPTX
Introdução ao AngularJS
PPTX
PPTX
Técnicas de Refactoring
PDF
#5 - Git - Contribuindo com um repositório remoto
PPTX
Test-Driven Development com JavaScript, Jasmine Karma
PDF
#2 - Git - DAG
PPTX
Selenium - WebDriver
PPTX
HTTP, JSON, REST e AJAX com AngularJS
PPTX
JavaScript - Date
PPTX
Scope AngularJS
PPTX
Criando Filtros com AngularJS
PPTX
Automação de Testes com AngularJS
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
A evolução do AngularJS
Utilizando diretivas com AngularJS
Construindo Diretivas com AngularJS
Criando serviços com AngularJS
HTTP Interceptors com AngularJS
Introdução ao AngularJS
Técnicas de Refactoring
#5 - Git - Contribuindo com um repositório remoto
Test-Driven Development com JavaScript, Jasmine Karma
#2 - Git - DAG
Selenium - WebDriver
HTTP, JSON, REST e AJAX com AngularJS
JavaScript - Date
Scope AngularJS
Criando Filtros com AngularJS
Automação de Testes com AngularJS
Anúncio

Semelhante a Node.js - #5 - Process - Rodrigo Branas (20)

PDF
Testes em Aplicações Web com Cactus
PDF
Ecosistema spring a_plataforma_enterprise_jav
PDF
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
PDF
Realtime com node.js e socket.io
PPT
Struts2 remote codeexecution
PDF
Threads 07: Sincronizadores
PDF
Introdução ao processamento paralelo com o Grand Central Dispatch
PDF
Mini-curso Programação Paralela e Distribuída
PDF
Threads 08: Executores e Futures
PDF
Leonardo Zamariola - High Order Functions e Functional Interfaces
PDF
TDC2016POA | Trilha Android - Testes no Android
PDF
TDC2016POA | Trilha Android - Testes no Android
PDF
Aplicações com Tecnologias Web
ODP
servlet-respostas
ODP
App scala
PDF
Kernel cooperativo
ODP
Linux4all#2
PDF
pgBouncer: um aglomerador de conexões para PostgreSQL
PDF
Play Framework - FLISOL
PPT
ASP.Net Módulo 2
Testes em Aplicações Web com Cactus
Ecosistema spring a_plataforma_enterprise_jav
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
Realtime com node.js e socket.io
Struts2 remote codeexecution
Threads 07: Sincronizadores
Introdução ao processamento paralelo com o Grand Central Dispatch
Mini-curso Programação Paralela e Distribuída
Threads 08: Executores e Futures
Leonardo Zamariola - High Order Functions e Functional Interfaces
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
Aplicações com Tecnologias Web
servlet-respostas
App scala
Kernel cooperativo
Linux4all#2
pgBouncer: um aglomerador de conexões para PostgreSQL
Play Framework - FLISOL
ASP.Net Módulo 2

Mais de Rodrigo Branas (9)

PDF
Clean Architecture
PDF
#6 - Git - Desfazendo as coisas
PDF
#1 - Git - Introdução
PDF
#4 - Git - Stash
PDF
#3 - Git - Branching e Merging
PPTX
JavaScript - Expressões Regulares
PPTX
Criando aplicações Single-Page com AngularJS
PPTX
PPTX
Desvendando a linguagem JavaScript
Clean Architecture
#6 - Git - Desfazendo as coisas
#1 - Git - Introdução
#4 - Git - Stash
#3 - Git - Branching e Merging
JavaScript - Expressões Regulares
Criando aplicações Single-Page com AngularJS
Desvendando a linguagem JavaScript

Último (6)

PDF
Certificado de Conclusão Jornada Inteligência Artificial
PDF
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
PDF
Metodologias ágeis - Slides - aulas 1 a 5.pdf
PPTX
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PDF
PROJETO DE PESQUISA PRONTO FONOAUDIOLOGIA 2025 ABNT.pdf
PDF
PROJETO DE PESQUISA PRONTO ESTÉTICA 2025 ABNT.pdf
Certificado de Conclusão Jornada Inteligência Artificial
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
Metodologias ágeis - Slides - aulas 1 a 5.pdf
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PROJETO DE PESQUISA PRONTO FONOAUDIOLOGIA 2025 ABNT.pdf
PROJETO DE PESQUISA PRONTO ESTÉTICA 2025 ABNT.pdf

Node.js - #5 - Process - Rodrigo Branas

  • 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Process
  • 2. Um processo é uma instância de um determinado programa em execução no sistema operacional.
  • 5. Exibindo as variáveis globais global.js 1. Object.keys(global).forEach(function (value) { 2. console.log(value); 3. });
  • 7. Exibindo as propriedades global_process.js 1. Object.keys(process).forEach(function (value) { 2. console.log(value); 3. });
  • 9. Obtendo argumentos da linha de comando process.js 1. process.argv.forEach(function (value) { 2. console.log(value); 3. });
  • 12. Exibindo informações do processo process.js 1. var help = require('./help'); 2. var options = process.argv.slice(2); 3. if (options.length < 1) { 4. help.showOptions(); 5. return; 6. } 7. var option = options[0]; 8. switch(option) { 9. case 'a': 10. console.log('pid: ' + process.pid); 11. break; 12. case 'b': 13. console.log('title: ' + process.title); 14. break; 15. case 'c': 16. console.log('arch: ' + process.arch); 17. break; 18. case 'd': 19. console.log('platform: ' + process.platform); 20. break; 21. default: 22. help.showOptions(); 23. }
  • 13. Opções disponíveis help.js 1. var help = [ 2. 'a) pid', 3. 'b) title', 4. 'c) arch', 5. 'd) platform' 6. ]; 8. exports.showOptions = function () { 9. help.forEach(function (value) { 10. console.log(value); 11. }); 12. };
  • 16. São canais de comunicação, utilizados para realizar operações de entrada e saída, entre o programa e o ambiente onde ele está sendo executado.
  • 18. Utilizando stdout console.js 1. var konsole = { 2. log: function (msg) { 3. process.stdout.write(msg + 'n'); 4. } 5. }; 6. konsole.log('A');
  • 20. Utilizando stdout e stderr console.js 1. var konsole = { 2. log: function (msg) { 3. process.stdout.write(msg + 'n'); 4. }, 5. error: function (msg) { 6. process.stderr.write(msg + 'n'); 7. } 8. }; 9. konsole.log('A'); 10. konsole.error('B');
  • 22. Qual é a diferença entre output e error?
  • 23. Eles podem ser tratados e redirecionados de formas diferentes
  • 24. Utilizando stdout e stderr console.js 1. var konsole = { 2. log: function (msg) { 3. process.stdout.write(msg + 'n'); 4. }, 5. error: function (msg) { 6. process.stderr.write(msg + 'n'); 7. } 8. }; 9. konsole.log('A'); 10. konsole.error('B');
  • 26. Podemos ainda verificar com quem estamos interagindo, se é um TTY, ou teletype, o terminal ou o teclado, ou PTY, ou pseudo-teletype, que se refere a algum tipo de software como telnet, ssh ou xterm.
  • 27. Utilizando stdout e stderr com isTTY console.js 1. var konsole = { 2. log: function (msg) { 3. process.stdout.write(msg + 'n'); 4. }, 5. error: function (msg) { 6. process.stderr.write(msg + 'n'); 7. } 8. }; 9. konsole.log('A TTY:' + !!process.stdout.isTTY); 10. konsole.error('B TTY:' + !!process.stderr.isTTY);
  • 29. Utilizando stdin para ler o teclado keyboard.js 1. exports.onReadable = function (callback) { 2. process.stdin.on('readable', function () { 3. var chunk = process.stdin.read(); 4. if (chunk !== null) { 5. var data = chunk.toString().replace(/n/, ''); 6. callback(data); 7. } 8. }); 9. };
  • 30. Exibindo informações do processo process_with_keyboard.js 1. var keyboard = require('./keyboard'); 2. var help = require('./help'); 4. keyboard.onReadable(function (option) { 5. switch(option) { 6. case 'a': 7. console.log('pid: ' + process.pid); 8. break; 9. case 'b': 10. console.log('title: ' + process.title); 11. break; 12. case 'c': 13. console.log('arch: ' + process.arch); 14. break; 15. case 'd': 16. console.log('platform: ' + process.platform); 17. break; 18. default: 19. help.showOptions(); 20. } 21. });
  • 32. Abortando o processo process_with_keyboard.js 1. var keyboard = require('./keyboard'); 2. var help = require('./help'); 4. keyboard.onReadable(function (option) { 5. switch(option) { 6. case 'a': 7. console.log('pid: ' + process.pid); 8. break; 9. case 'b': 10. console.log('title: ' + process.title); 11. break; 12. case 'c': 13. console.log('arch: ' + process.arch); 14. break; 15. case 'd': 16. console.log('platform: ' + process.platform); 17. break; 18. case 'q': 19. process.exit(); 20. default: 21. help.showOptions(); 22. } 23. });
  • 34. Exibindo outras informações do processo process_with_keyboard.js 1. ... 2. switch(option) { 3. case 'a': 4. console.log('pid: ' + process.pid); 5. break; 6. case 'b': 7. console.log('title: ' + process.title); 8. break; 9. case 'c': 10. console.log('arch: ' + process.arch); 11. break; 12. case 'd': 13. console.log('platform: ' + process.platform); 14. break; 15. case 'e': 16. console.dir(process.env); 17. break; 18. case 'u': 19. console.log('uptime: ' + process.uptime()); 20. break; 21. case 'v': 22. console.dir(process.versions); 23. break; 24. case 'q': 25. process.exit(); 26. default: 27. help.showOptions(); 28. }
  • 36. Tratando eventos (exit) process_with_keyboard.js 1. ... 2. process.on('exit', function () { 3. console.log('bye'); 4. });
  • 38. Tratando eventos (uncaughtException) process_with_keyboard.js 1. ... 2. process.on('uncaughtException', function () { 3. console.log('error'); 4. });
  • 39. Trate as exceções adequadamente
  • 40. Rodrigo Branas Agile Code: http://www.agilecode.com.br Twitter: @rodrigobranas SlideShare: http://www.slideshare.com/rodrigobranas YouTube: http://www.youtube.com/rodrigobranas LinkedIn: http://br.linkedin.com/in/rodrigobranas +Plus: https://plus.google.com/+RodrigoBranas GitHub: http://www.github.com/rodrigobranas