Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Node.js - #5 - Process - Rodrigo Branas

5.937 Aufrufe

Veröffentlicht am

Vamos falar sobre o objeto process, abordando algumas de suas principais informações como: pid, title, arch, platform, memoryUsage, uptime, env e muito mais.

Vamos começar interagindo com os argumentos passados pela linha de comando e depois por meio do teclado. Falaremos também sobre os 3 tipos de standard stream: input, output e error.

Por fim, aprenderemos a abortar o processo e a tratar eventos como exit e uncaughtException.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

Node.js - #5 - Process - Rodrigo Branas

  1. 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Process
  2. 2. Um processo é uma instância de um determinado programa em execução no sistema operacional.
  3. 3. https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
  4. 4. Exibindo as variáveis globais global.js 1. Object.keys(global).forEach(function (value) { 2. console.log(value); 3. });
  5. 5. Exibindo as propriedades global_process.js 1. Object.keys(process).forEach(function (value) { 2. console.log(value); 3. });
  6. 6. Obtendo argumentos da linha de comando process.js 1. process.argv.forEach(function (value) { 2. console.log(value); 3. });
  7. 7. Exibindo informações do processo
  8. 8. 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. }
  9. 9. 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. };
  10. 10. Standard Streams
  11. 11. 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.
  12. 12. Input Output Error
  13. 13. Utilizando stdout console.js 1. var konsole = { 2. log: function (msg) { 3. process.stdout.write(msg + 'n'); 4. } 5. }; 6. konsole.log('A');
  14. 14. 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');
  15. 15. Qual é a diferença entre output e error?
  16. 16. Eles podem ser tratados e redirecionados de formas diferentes
  17. 17. 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');
  18. 18. 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.
  19. 19. 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);
  20. 20. 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. };
  21. 21. 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. });
  22. 22. 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. });
  23. 23. 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. }
  24. 24. Tratando eventos (exit) process_with_keyboard.js 1. ... 2. process.on('exit', function () { 3. console.log('bye'); 4. });
  25. 25. Tratando eventos (uncaughtException) process_with_keyboard.js 1. ... 2. process.on('uncaughtException', function () { 3. console.log('error'); 4. });
  26. 26. Trate as exceções adequadamente
  27. 27. 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

×