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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法

發布時間:2024/9/27 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來源 | https://github.com/CommanderXL/biu-blog/issues/25

exec

其中exec可用于在指定的shell當中執行命令。不同參數間使用空格隔開,可用于復雜的命令。const { exec } = require('child_process')exec('cat *.js bad_file | wc -l')exec方法用于異步創建一個新的子進程,可以接受一個callback。exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => { console.log(stdout)})傳給回調的stdout和stderr參數會包含子進程的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。而是指定的可執行的文件直接創建一個新的進程。

fork

child_process.fork(modulePath[, args][, options])創建一個新的node子進程。調用該方法后返回一個子進程的對象。通過fork方法創建出來的子進程可以和父進程通過內置的ipc通道進行通訊。衍生的 Node.js 子進程與兩者之間建立的 IPC 通信信道的異常是獨立于父進程的。每個進程都有自己的內存,使用自己的 V8 實例。由于需要額外的資源分配,因此不推薦衍生大量的 Node.js 進程。其中在options的配置信息當中:

silent

父子進程間stdin/stdout/stderr之間的通訊。如果置為true,那么子進程的標準輸入輸出都會被導流到父進程中:parent.jsconst { fork } = require('child_process')const fd = fork('./sub.js')fd.stdout.on('data', data => console.log(data))sub.jsconsole.log('this is sub process')一般在子進程中如果有stdin的時候,可將stdin直接導入到父進程中,這樣可進行tty和shell的交互。如果置為false,那么子進程的標準輸入輸出都會繼承父進程的。stdio關于這個的配置見下文。spawnchild_process.spawn(command[, args][, options])上面說到的exec,execFile和fork創建新的子進程都是基于這個方法進行的封裝。調用這個方法返回子進程對象。

父子進程間的通訊

其中通過fork方法和spawn創建新的子進程時,在配置選項中有關于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');// 子進程使用父進程的 stdiosspawn('prg', [], { stdio: 'inherit' });// 衍生的子進程只共享 stderrspawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });// 打開一個額外的 fd=4,用于與程序交互spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });本文完~

免責申明:本站所有內容均來自網絡,我們對文中觀點保持中立,對所包含內容的準確性,可靠性或者完整性不提供任何明示或暗示的保證,請僅作參考。若有侵權,請聯系刪除。

總結

以上是生活随笔為你收集整理的子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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