最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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à)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

exec

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

不同參數(shù)間使用空格隔開,可用于復(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)程的對象。

通過fork方法創(chuàng)建出來的子進(jìn)程可以和父進(jìn)程通過內(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è)的配置見下文。

spawn

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

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

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

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

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

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

默認(rèn)情況下,子進(jìn)程的 stdin、 stdout 和 stderr 會(huì)重定向到 ChildProcess 對象上相應(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] });
 
// 打開一個(gè)額外的 fd=4,用于與程序交互
spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });

總結(jié)

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

相關(guān)文章

  • Nodejs爬蟲進(jìn)階教程之異步并發(fā)控制

    Nodejs爬蟲進(jìn)階教程之異步并發(fā)控制

    這篇文章主要介紹了Nodejs爬蟲進(jìn)階教程之異步并發(fā)控制的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • nvm如何切換與管理node版本

    nvm如何切換與管理node版本

    這篇文章主要介紹了nvm如何切換與管理node版本問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 干凈卸載Windows的Node.js環(huán)境的方法

    干凈卸載Windows的Node.js環(huán)境的方法

    這篇文章主要介紹了如何干凈卸載Windows的Node.js環(huán)境的方法,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對大家刪除Node.js環(huán)境有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • 基于Node.js進(jìn)行CSV、JSON以及Excel的數(shù)據(jù)處理

    基于Node.js進(jìn)行CSV、JSON以及Excel的數(shù)據(jù)處理

    在實(shí)際業(yè)務(wù)開發(fā)中,數(shù)據(jù)往往以多種文件格式存在,例如 CSV、JSON 和 Excel,這些格式廣泛應(yīng)用于數(shù)據(jù)導(dǎo)入導(dǎo)出、報(bào)表生成、系統(tǒng)對接以及批量處理任務(wù)中,Node.js 憑借豐富的第三方庫和良好的異步能力,非常適合進(jìn)行各類結(jié)構(gòu)化數(shù)據(jù)的處理,需要的朋友可以參考下
    2025-12-12
  • 如何利用node轉(zhuǎn)發(fā)請求詳解

    如何利用node轉(zhuǎn)發(fā)請求詳解

    這篇文章主要給大家介紹了關(guān)于利用node轉(zhuǎn)發(fā)請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 推薦 21 款優(yōu)秀的高性能 Node.js 開發(fā)框架

    推薦 21 款優(yōu)秀的高性能 Node.js 開發(fā)框架

    Node.js是JavaScript中最為流行的框架之一,易于創(chuàng)建可擴(kuò)展的Web應(yīng)用。Node.js包含不同類型框架,包括MVC, full-stack,REST API以及Generators。借助這些框架使Node.js更加易于使用,它還支持眾多特性功能,只需幾個(gè)步驟就可快速搭建強(qiáng)大的Web應(yīng)用。本文為大家推薦21款
    2014-08-08
  • 解決node終端下運(yùn)行js文件不支持ES6語法

    解決node終端下運(yùn)行js文件不支持ES6語法

    這篇文章主要介紹了解決node終端下運(yùn)行js文件不支持ES6語法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Node.js模塊化原理與應(yīng)用詳細(xì)介紹

    Node.js模塊化原理與應(yīng)用詳細(xì)介紹

    本篇文章我們將進(jìn)入我們的模塊化學(xué)習(xí),node的模塊化正是node的最大特點(diǎn),能夠幫住我們將繁瑣的復(fù)雜代碼變成一個(gè)個(gè)的小模塊,便于引用
    2022-09-09
  • visual studio配置node.js開發(fā)的圖文教程

    visual studio配置node.js開發(fā)的圖文教程

    在進(jìn)行node開發(fā)時(shí),使用visual studio作為開發(fā)工具是非常常見的選擇,本文主要介紹了visual studio配置node.js開發(fā)的圖文教程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • nodejs 中的讀取文件fs模塊示例詳解

    nodejs 中的讀取文件fs模塊示例詳解

    這篇文章主要為大家介紹了nodejs中的讀取文件fs模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論

马龙县| 酒泉市| 来凤县| 溆浦县| 江津市| 浦县| 铁力市| 施秉县| 长宁县| 读书| 万年县| 晋州市| 汝州市| 平陆县| 利辛县| 蒲城县| 奉化市| 金塔县| 巩留县| 封开县| 彭州市| 山东| 泽州县| 翼城县| 凤城市| 鄂托克旗| 横峰县| 诏安县| 团风县| 湘潭县| 民县| 宜丰县| 平果县| 冕宁县| 垫江县| 大邑县| 湘潭市| 黄山市| 安图县| 石家庄市| 报价|