日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node.js入门 - 12.api:进程(process)

發(fā)布時間:2025/3/21 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node.js入门 - 12.api:进程(process) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  雖然node對操作系統(tǒng)做了很多抽象的工作,但是你還是可以直接和他交互,比如和系統(tǒng)中已經存在的進程進行交互,創(chuàng)建工作子進程。node是一個用于事件循環(huán)的線程,但是你可以在這個事件循環(huán)之外創(chuàng)建其他的進程(線程)參與工作。

  進程模塊

  process模塊允許你獲得或者修改當前node進程的設置,不想其他的模塊,process是一個全局進程,你可以直接通過process變量直接訪問它。

  process實現了EventEmitter接口,exit方法會在當進程退出的時候執(zhí)行。因為進程退出之后將不再執(zhí)行事件循環(huán),所有只有那些沒有回調函數的代碼才會被執(zhí)行。在下面例子中,setTimeout里面的語句是沒有辦法執(zhí)行到的。

process.on('exit', function () {setTimeout(function () {console.log('This will not run');}, 100);console.log('Bye.'); });

  在你接觸node之后,你就會發(fā)現那些影響了主事件循環(huán)的異常會把整個node進程宕掉的。這會是相當嚴重的問題,所以process提供了另外一個有用的事件uncaughtException來解決這個問題,他會把異常抓取出來供你處理。

process.on('uncaughtException', function (err) {console.log('Caught exception: ' + err); }); setTimeout(function () {console.log('This will still run.'); }, 500); // Intentionally cause an exception, but don't catch it. nonexistentFunc(); console.log('This will not run.');

?  我們來看上面的例子,我們注冊了uncaughtException事件來捕捉系統(tǒng)異常。執(zhí)行到nonexistentFunc()時,因為該函數沒有定義所以會拋出異常。因為javascript是解釋性的語言,nonexistentFunc()方法上面的語句不會被影響到,他下面的語句不會被執(zhí)行。所以他的執(zhí)行結果如下:

Caught exception: ReferenceError: nonexistentFunc is not defined This will still run.

  我們再看一個例子。

var http = require('http'); var server = http.createServer(function(req,res) {res.writeHead(200, {});res.end('response');badLoggingCall('sent response');console.log('sent response'); }); process.on('uncaughtException', function(e) {console.log(e); }); server.listen(8080);

?  在這里例子中我們創(chuàng)建了一個web服務器,當處理完請求之后,我們會執(zhí)行badLoggingCall()方法。因為這個方法不存在,所以會有異常拋出。但是我們注冊的uncaughtException事件會對異常做出處理,這樣服務器不會受到影響得以繼續(xù)運行。我們會在服務器端記錄錯誤日志。

[ReferenceError: badLoggingCall is not defined]

?

?  與當前進程交互

  node提供了一些process的屬性,如下:

process.version:包含當前node實例的版本號;

process.installPrefix:包含安裝路徑;

process.platform:列舉node運行的操作系統(tǒng)的環(huán)境,只會顯示內核相關的信息,如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;

process.uptime():包含當前進程運行的時長(秒);

process.getgid(), process.setgid():獲取或者設置group id;

process.getuid(), process.setuid():獲取或者設計user id;

process.pid:獲取進程id;

process.title:設置進程名稱;

process.execPath:當前node進程的執(zhí)行路徑,如:/usr/local/bin/node;

process.cwd():當前工作目錄;

process.memoryUsage():node進程內存的使用情況,rss代表ram的使用情況,vsize代表總內存的使用大小,包括ram和swap;

process.heapTotal,process.heapUsed:分別代表v8引擎內存分配和正在使用的大小。

?

?  事件循環(huán)和ticker

  node中提供了process.nextTick()方法,允許你訪問事件循環(huán)和延時那你的工作。他有點類似于setTimeout(),他會在下次tick的時候執(zhí)行,而且每隔一段事件就會執(zhí)行一次。我們這里有個例子:

var http = require('http'); var s = http.createServer(function(req, res) {res.writeHead(200, {});res.end('foo');console.log('http response');process.nextTick(function(){console.log('tick')}); }); s.listen(8000);

  當請求來的時候,會記錄日志‘http response’和‘tick’,當沒有請求的時候,每隔一段事件會執(zhí)行事件循環(huán),會輸出tick。

  此外,nextTick創(chuàng)建的回調函數具有隔離性,他們之間不會相互影響。

process.on('uncaughtException', function(e) {console.log(e); }); process.nextTick(function() {console.log('tick'); }); process.nextTick(function() {iAmAMistake();console.log('tock'); }); process.nextTick(function() {console.log('tick tock'); }); console.log('End of 1st loop');

  在這個例子中,首先輸出‘End of 1st loop’,然后順序的輸出nextTick的回調函數,第一個會正常輸出‘tick’,第二個是一個故意設置的異常會輸出異常信息,不會輸出‘tock’,因為nextTick回調函數的隔離性,第三個任然會輸出‘tick tock’。結果如下:

End of 1st loop tick [ReferenceError: iAmAMistake is not defined] tick tock

?

  子進程

  node提供了child_process模塊,允許你為主進程創(chuàng)建子進程,這樣你就可以使用更多的服務器資源,使用更多的cpu,這些概念在前面的章節(jié)有介紹。node提供了child_process. spawn()和child_process.?exec()為你實現這一功能,下面我們就單獨介紹。

  

  child_process.exec( )

  我們來看exec的一個簡單例子,他創(chuàng)建了一個子進程,第一個參數是一個shell命令,第二個參數是回調函數,處理返回結果。

var cp = require('child_process'); cp.exec('ls -l', function(e, stdout, stderr) {if(!e) {console.log(stdout);console.log(stderr);} });

exec()還可以傳options的參數:

var options = { encoding: 'utf8',timeout: 0,maxBuffer: 200 * 1024,killSignal: 'SIGTERM',setsid: false,cwd: null,env: null };

var cp = require('child_process'); cp.exec('ls -l', options, function(e, stdout, stderr) {if(!e) {console.log(stdout);console.log(stderr);} }); ?

encoding:I/O流的編碼格式;

timeout:進程超時時間;

killSignal:當時間或者緩沖區(qū)超限時終止進程的信號;

maxBuffer:stdout或stderr可增長的最大值;

setsid:決定在進程中是否創(chuàng)建一個新的會話;

cwd:進程的初始工作目錄,為null時表示使用node的當前工作目錄;

env:進程的環(huán)境變量。

?

  child_process.spawn( )

  child_process.spawn( )比child_process.exec( )更加強大和靈活,例子如下:

var cp = require('child_process'); var cat = cp.spawn('cat'); cat.stdout.on('data', function(d) {console.log(d.toString()); }); cat.on('exit', function() {console.log('kthxbai'); }); cat.stdin.write('meow'); cat.stdin.end();

?

?

轉載于:https://www.cnblogs.com/softlover/archive/2012/10/03/2707139.html

總結

以上是生活随笔為你收集整理的node.js入门 - 12.api:进程(process)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美久久免费 | 亚洲蜜桃精久久久久久久久久久久 | 麻豆午夜视频 | 日本在线网址 | 吸咬奶头狂揉60分钟视频 | 日韩激情av | 亚洲av毛片一区二二区三三区 | 久久精品一区二区免费播放 | 超碰日韩在线 | 夜夜夜网 | 亚洲激情中文字幕 | 黑人糟蹋人妻hd中文字幕 | 桃色视频网站 | 国产亚洲欧美精品久久久www | 欧美午夜大片 | 国产又黄又粗又猛又爽视频 | 少妇一夜三次一区二区 | 青青视频在线免费观看 | 中日一级片 | 欧美一区在线视频 | 中国一级片在线观看 | 91精品国产欧美一区二区 | 国产网站精品 | 欧美乱妇日本无乱码特黄大片 | 欧美日韩aa | 黄色国产视频网站 | 中文字幕第九页 | 巨胸爆乳美女露双奶头挤奶 | 精品成人无码一区二区三区 | 91蜜桃在线观看 | 少妇精品久久久久久久久久 | 男生操女生在线观看 | 不用播放器看av | 狠狠操人人干 | 痴女扩张宫交脱垂重口小说 | 一区二区三区中文字幕 | 日韩av福利 | 欧美三级电影在线观看 | 日韩精品一区二区三区 | 911香蕉视频 | 香蕉日日| 91天堂在线观看 | 国产精品无码一区二区三区三 | 色综合色综合网色综合 | 中文字幕在线视频免费 | 福利视频三区 | 女性女同性aⅴ免费观女性恋 | 亚洲精品视频在线看 | 377p粉嫩大胆色噜噜噜 | 超碰日韩在线 | 成人做爰免费视频免费看 | 日韩精品不卡 | 免费在线看污 | 亚洲AV第二区国产精品 | 国产手机在线 | 久久97| 成人gav| 精品视频三区 | 日本一本一道 | 中文字幕丝袜 | 免费看色 | 亚洲欧美另类综合 | а√天堂资源在线 | 成人国产免费观看 | 亚洲精品无码久久 | 女仆裸体打屁屁羞羞免费 | 亚洲区在线播放 | 电车痴汉在线观看 | 高清毛片aaaaaaaaa郊外 | 激情欧美一区 | 天堂网一区二区三区 | 国产日韩欧美不卡 | 全黄一级片 | 五月天婷婷在线视频 | 韩国一级淫一片免费放 | 91精品久久久久久久久中文字幕 | 国产经典三级在线 | 中文字幕av影院 | 在线观看视频一区二区 | 9i看片成人免费看片 | 99精品在线观看视频 | 欧美在线视频免费 | 亚洲精品一级片 | 国产精品国产一区 | 美女诱惑一区 | 暖暖av| 色天天天 | 天天综合欧美 | 亚洲人丰满奶水 | 91免费福利 | 91av视频网 | 久久久久久久久久久久国产 | 视频一区在线播放 | 三级黄色在线视频 | 久久婷婷av | 日韩在线免费视频观看 | 一级激情片 | 久久人妻少妇嫩草av蜜桃 | 欧美日韩免费在线观看 |