process是1個(gè)全局變量,可以直接調(diào)用。
process的屬性,以下:
version:包括當(dāng)前node實(shí)例的版本號(hào);
installPrefix:包括安裝路徑;
platform:羅列node運(yùn)行的操作系統(tǒng)的環(huán)境,只會(huì)顯示內(nèi)核相干的信息,如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;
pid:獲得進(jìn)程id;
title:設(shè)置進(jìn)程名稱;
execPath:當(dāng)前node進(jìn)程的履行路徑,如:/usr/local/bin/node;
memoryUsage():node進(jìn)程內(nèi)存的使用情況,rss代表ram的使用情況,vsize代表總內(nèi)存的使用大小,包括ram和swap;
heapTotal,process.heapUsed:分別代表v8引擎內(nèi)存分配和正在使用的大小。
argv:這是1個(gè)數(shù)組,數(shù)組里寄存著啟動(dòng)這個(gè)node.js進(jìn)程各個(gè)參數(shù)和命令代碼;
uptime():包括當(dāng)前進(jìn)程運(yùn)行的時(shí)長(zhǎng)(秒);
getgid():獲得或設(shè)置group id;
setuid():獲得或設(shè)計(jì)user id;
cwd():當(dāng)前工作目錄;
exit(code=0):kill當(dāng)前進(jìn)程;
kill(pid, signal='SIGTERM'):發(fā)出1個(gè)kill信號(hào)給指定pid;
nextTick(callback):異步履行callback函數(shù);
umask([mask]) :設(shè)置進(jìn)程的user mask值;
事件
exit: 當(dāng)process退出時(shí)觸發(fā)
uncaughtException: 異常事件,使本node.js進(jìn)程中斷的異常
Signal: 自定義事件
例如:
process.on('SIGNAL_ONE', function(data){
console.log(data);
process.exit(0);
});//監(jiān)聽自定義事件
process.emit('SIGNAL_ONE', 'Bye');// 觸發(fā)自定義事件
控制臺(tái)
process.stdout 控制臺(tái)輸出流
process.stdin 控制臺(tái)輸入流
子進(jìn)程
child_process模塊提供了4個(gè)創(chuàng)建子進(jìn)程的函數(shù),分別是spawn,exec,execFile和fork。
其中spawn是最原始的創(chuàng)建子進(jìn)程的函數(shù),其他3個(gè)都是對(duì)spawn不同程度的封裝。
spawn只能運(yùn)行指定的程序,參數(shù)需要在列表中給出,相當(dāng)于execvp系統(tǒng)函數(shù);
而exec可以直接運(yùn)行復(fù)雜的命令。
原型以下:
child_process.spawn(command, [args], [options]);
child_process.exec(command, [options], callback);
exec的實(shí)現(xiàn)原理是啟動(dòng)了1個(gè)系統(tǒng)shell來解析參數(shù)。
fork函數(shù)用于直接運(yùn)行Node.js模塊,在父進(jìn)程與子進(jìn)程直接建立1個(gè)IPC管道,用于父子進(jìn)程之間的通訊。