亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式

 更新時(shí)間:2023年10月30日 09:24:45   作者:高先生的貓  
這篇文章主要介紹了Node.js創(chuàng)建子進(jìn)程的幾種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

exec

其中exec可用于在指定的shell當(dāng)中執(zhí)行命令。

不同參數(shù)間使用空格隔開(kāi),可用于復(fù)雜的命令。

const { exec } = require('child_process')
exec('cat *.js bad_file | wc -l')

exec方法用于異步創(chuàng)建一個(gè)新的子進(jìn)程,可以接受一個(gè)callback。

exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {
  console.log(stdout)
})

傳給回調(diào)的stdout和stderr參數(shù)會(huì)包含子進(jìn)程的stdout和stderr的輸出。

execFile

child_process.execFile(file[, args][, options][, callback])
const { execFile } = require('child_process')
execFile('node', ['--version'], (err, stdout, stderr) => {
  console.log(stdout)
})

不是直接衍生一個(gè)shell。

而是指定的可執(zhí)行的文件直接創(chuàng)建一個(gè)新的進(jìn)程。

fork

child_process.fork(modulePath[, args][, options])

創(chuàng)建一個(gè)新的node子進(jìn)程。調(diào)用該方法后返回一個(gè)子進(jìn)程的對(duì)象。

通過(guò)fork方法創(chuàng)建出來(lái)的子進(jìn)程可以和父進(jìn)程通過(guò)內(nèi)置的ipc通道進(jìn)行通訊。

衍生的 Node.js 子進(jìn)程與兩者之間建立的 IPC 通信信道的異常是獨(dú)立于父進(jìn)程的。

每個(gè)進(jìn)程都有自己的內(nèi)存,使用自己的 V8 實(shí)例。

由于需要額外的資源分配,因此不推薦衍生大量的 Node.js 進(jìn)程。

其中在options的配置信息當(dāng)中:

silent

父子進(jìn)程間stdin/stdout/stderr之間的通訊。

如果置為true,那么子進(jìn)程的標(biāo)準(zhǔn)輸入輸出都會(huì)被導(dǎo)流到父進(jìn)程中:

parent.js
const { fork } = require('child_process')
const fd = fork('./sub.js')
 
fd.stdout.on('data', data => console.log(data))
 
sub.js
console.log('this is sub process')

一般在子進(jìn)程中如果有stdin的時(shí)候,可將stdin直接導(dǎo)入到父進(jìn)程中,這樣可進(jìn)行tty和shell的交互。

如果置為false,那么子進(jìn)程的標(biāo)準(zhǔn)輸入輸出都會(huì)繼承父進(jìn)程的。

stdio

關(guān)于這個(gè)的配置見(jiàn)下文。

spawn

child_process.spawn(command[, args][, options])

上面說(shuō)到的exec,execFile和fork創(chuàng)建新的子進(jìn)程都是基于這個(gè)方法進(jìn)行的封裝。

調(diào)用這個(gè)方法返回子進(jìn)程對(duì)象。

父子進(jìn)程間的通訊

其中通過(guò)fork方法和spawn創(chuàng)建新的子進(jìn)程時(shí),在配置選項(xiàng)中有關(guān)于stdio的?字段:

這個(gè)字段主要用于父子進(jìn)程間的管道配置。

默認(rèn)情況下,子進(jìn)程的 stdin、 stdout 和 stderr 會(huì)重定向到 ChildProcess 對(duì)象上相應(yīng)的 subprocess.stdin、 subprocess.stdout 和 subprocess.stderr 流。

這等同于將 options.stdio 設(shè)為 ['pipe', 'pipe', 'pipe']。

  • pipe:等同于 [pipe, pipe, pipe] (默認(rèn))
  • ignore:等同于 [ignore, ignore, ignore]
  • inherit:等同于 [process.stdin, process.stdout, process.stderr] 或 [0,1,2]

其中inherit即繼承父進(jìn)程的標(biāo)準(zhǔn)輸入輸出(和父進(jìn)程共享)。

const { spawn } = require('child_process');
 
// 子進(jìn)程使用父進(jìn)程的 stdios
spawn('prg', [], { stdio: 'inherit' });
 
// 衍生的子進(jìn)程只共享 stderr
spawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });
 
// 打開(kāi)一個(gè)額外的 fd=4,用于與程序交互
spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • sharp.js安裝過(guò)程中遇到的問(wèn)題總結(jié)

    sharp.js安裝過(guò)程中遇到的問(wèn)題總結(jié)

    本文給大家講述的是Node.js服務(wù)端圖片處理利器sharp.js安裝過(guò)程中遇到的問(wèn)題的匯總,非常不錯(cuò),有需要的小伙伴可以參考下
    2020-04-04
  • 對(duì)node通過(guò)fs模塊判斷文件是否是文件夾的實(shí)例講解

    對(duì)node通過(guò)fs模塊判斷文件是否是文件夾的實(shí)例講解

    今天小編就為大家分享一篇對(duì)node通過(guò)fs模塊判斷文件是否是文件夾的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • npm安裝sharp出現(xiàn)的問(wèn)題詳解(安裝失敗的問(wèn)題及解決)

    npm安裝sharp出現(xiàn)的問(wèn)題詳解(安裝失敗的問(wèn)題及解決)

    這篇文章主要給大家介紹了關(guān)于npm安裝sharp出現(xiàn)的問(wèn)題(安裝失敗的問(wèn)題及解決)的相關(guān)資料,sharp包是基于node.js的高性能圖片處理器,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 如何讓node運(yùn)行es6模塊文件及其原理詳解

    如何讓node運(yùn)行es6模塊文件及其原理詳解

    這篇文章主要介紹了如何讓node運(yùn)行es6模塊文件及其原理詳解,詳細(xì)的介紹了2種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫(kù)

    詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫(kù)

    本篇文章主要介紹了詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 如何在Node.js中使用async函數(shù)的方法詳解

    如何在Node.js中使用async函數(shù)的方法詳解

    這篇文章主要為大家介紹了如何在Node.js中使用async函數(shù)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 詳解Nodejs之npm&package.json

    詳解Nodejs之npm&package.json

    本篇文章主要介紹了詳解Nodejs之npm&package.json,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Node.js添加API限流與日志優(yōu)化詳解

    Node.js添加API限流與日志優(yōu)化詳解

    這篇文章主要介紹了Node.js添加API限流與日志優(yōu)化的相關(guān)資料,以增強(qiáng)API的穩(wěn)定性和可維護(hù)性,API限流功能可以防止惡意請(qǐng)求和DDoS攻擊,優(yōu)化后的日志記錄系統(tǒng)則可以幫助我們更好地跟蹤和調(diào)試應(yīng)用,快速定位問(wèn)題,需要的朋友可以參考下
    2024-11-11
  • Nodejs的express使用教程

    Nodejs的express使用教程

    Express 是一個(gè)簡(jiǎn)潔、靈活的 node.js Web 應(yīng)用開(kāi)發(fā)框架, 它提供一系列強(qiáng)大的特性,幫助你創(chuàng)建各種 Web 和移動(dòng)設(shè)備應(yīng)用,本篇文章給大家介紹nodejs的express使用教程,感興趣的朋友參考下
    2015-11-11
  • 詳解如何在Node.js中執(zhí)行CPU密集型任務(wù)

    詳解如何在Node.js中執(zhí)行CPU密集型任務(wù)

    Node.js通常被認(rèn)為不適合CPU密集型應(yīng)用程序,Node.js的工作原理使其在處理I/O密集型任務(wù)時(shí)大放異彩,雖然執(zhí)行CPU密集型任務(wù)肯定不是Node的主要使用場(chǎng)景,但是我們依舊有方法來(lái)改善這些問(wèn)題,本文詳細(xì)給大家介紹了如何在Node.js中執(zhí)行CPU密集型任務(wù)
    2023-12-12

最新評(píng)論