3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
此篇文章瀏覽量: 878 Process 模組是 Node.js 提供的一個全域物件,可以在任何位置直接存取該物件,該物件包含了程式中所佔用的全部系統資源,例如:CPU、I/O、記憶體、環境變數等。因此,對 Process 進行有效的管理是很重要的。 取得應用程式目前的所在目錄、改變應用程式目前所在的目錄 console.log('目前的所在目錄位置:' + process.cwd()); console.log('更改目錄位置到: /Users/carlos'); process.chdir('/Users/carlos'); console.log('目前的所在目錄位置:' + process.cwd()); // 輸出以下內容: 目前的所在目錄位置:/Users/carlos/Documents/test 更改目錄位置到: /Users/carlos 目前的所在目錄位置:/Users/carlos 取得系統相關資訊 // 輸出處理程序 PID console.log(process.pid); // 輸出處理程序名稱(此例為 node) console.log(process.title); // 輸出 node 的版本號(此例為 v6.11.2) console.log(process.version); // 輸出 node 的版本相關屬性 console.log(process.versions); { http_parser: '2.7.0', node: '6.11.2', v8: '5.1.281.103', uv: '1.11.0', zlib: '1.2.11', ares: '1.10.1-DEV', icu: '58.2', modules: '48', openssl: '1.0.2l' } // 輸出 node 的系統組態相關設定 console.log(process.config); // 輸出執行現在處理程序可執行檔的絕對路徑 console.log(process.execPath); // /usr/local/bin/node // 輸出現在處理程序的命令列參數陣列 console.log(process.argv); [ '/usr/local/bin/node', '/Users/carlos/Documents/test/buffer-define.js' ] // 輸出現在系統平台(此例為 darwin) console.log(process.platform); // 輸出現在 CPU 架構(此例為 X64) console.log(process.arch); // 輸出系統環境變數 console.log(process.env); process 的標準輸出串流 process.stdout.write('output\n'); // 會輸出 output 文字並斷行。與 console.log() 是相同的,因為 console.log() 就是封裝了 process.stdout.write() 方法後實作的結果。 process 的標準錯誤串流 var fs = require('fs'); var file = 'err.txt'; var encoding = 'UTF-8'; fs.readFile(file, encoding, function(err, data){ if(err){ process.stderr.write('err: ' + err + '\n'); } else { console.log(data); } }); // 若檔案不存在的話,就會輸出以下: err: Error: ENOENT: no such file or directory, open 'err.txt' process 的標準輸入串流 // 接受 console 輸入 process.stdin.setEncoding('utf8'); process.stdin.on('readable', function(){ var chunk = process.stdin.read(); if(chunk !== null){ process.stdout.write('Print Data: ' + chunk + '\n'); } }); // 按下「Ctrl + d」後,結束 console process.stdin.on('end', function(){ process.stdout.write('end.\n'); }); 輸出的測試結果如下: 如何 kill 處理程序 console.log('目前 process id:' + process.pid); process.on('SIGHUP', function(){ // 用於終止控制台 Node 處理程序 console.log('Got SIGHUP signal.'); }); setTimeout(function(){ console.log('Exiting...'); process.exit(0); // 這行才會真正的終止目前的 process console.info('已退出 process id:' + process.pid); // 此行並不會輸出,因為該 process 已結束。 }, 1000); process.kill(process.pid, 'SIGHUP'); // 這並不會結束 process,只是發出 SIGHUP 訊號。 console.info('正在結束 process id:' + process.pid); 輸出結果如圖: Process 模組的非同步方法:process.nextTick() 可以使用 process.nextTick() 方法來取代 setTimeout() 方法,因為效率較高。 console.time('startB'); // 計時器 startB 開始計時 console.log('start - setTimeout'); setTimeout(function(){ // setTimeout() 的非同步作業 console.log('nextTick callback 2'); }, 0); console.log('scheduled - setTimeout'); console.timeEnd('startB'); // 計時器 startB 結束計時 console.time('startA'); // 計時器 startA 開始計時 console.log('start - nextTick'); process.nextTick(function(){ // process.nextTick() 的非同步作業 console.log('nextTick callback 1'); }); console.log('scheduled - nextTick'); console.timeEnd('startA'); // 計時器 startA 結束計時 console.info('== Process nextTick =='); 輸出結果如下圖,可以得知 process.nextTick() 效率很高,幾乎無阻塞,所以「nextTick callback 1」反而先被輸出。 若覺得文章有幫助,請多分享,讓其他同好也能吸收網站技能知識。 Facebook Twitter

本文由carlos-studiocom提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦