欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

exec

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

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

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

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

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

傳給回調的stdout和stderr參數(shù)會包含子進程的stdout和stderr的輸出。

execFile

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

不是直接衍生一個shell。

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

fork

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

創(chuàng)建一個新的node子進程。調用該方法后返回一個子進程的對象。

通過fork方法創(chuàng)建出來的子進程可以和父進程通過內置的ipc通道進行通訊。

衍生的 Node.js 子進程與兩者之間建立的 IPC 通信信道的異常是獨立于父進程的。

每個進程都有自己的內存,使用自己的 V8 實例。

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

其中在options的配置信息當中:

silent

父子進程間stdin/stdout/stderr之間的通訊。

如果置為true,那么子進程的標準輸入輸出都會被導流到父進程中:

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')

一般在子進程中如果有stdin的時候,可將stdin直接導入到父進程中,這樣可進行tty和shell的交互。

如果置為false,那么子進程的標準輸入輸出都會繼承父進程的。

stdio

關于這個的配置見下文。

spawn

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

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

調用這個方法返回子進程對象。

父子進程間的通訊

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

這個字段主要用于父子進程間的管道配置。

默認情況下,子進程的 stdin、 stdout 和 stderr 會重定向到 ChildProcess 對象上相應的 subprocess.stdin、 subprocess.stdout 和 subprocess.stderr 流。

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

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

其中inherit即繼承父進程的標準輸入輸出(和父進程共享)。

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

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • sharp.js安裝過程中遇到的問題總結

    sharp.js安裝過程中遇到的問題總結

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

    對node通過fs模塊判斷文件是否是文件夾的實例講解

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

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

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

    如何讓node運行es6模塊文件及其原理詳解

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

    詳解IWinter 一個路由轉控制器的 Nodejs 庫

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

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

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

    詳解Nodejs之npm&package.json

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

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

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

    Nodejs的express使用教程

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

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

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

最新評論