子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法
生活随笔
收集整理的這篇文章主要介紹了
子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來源 | https://github.com/CommanderXL/biu-blog/issues/25
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'] });本文完~
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创建子进程方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse html页面校验,当我在
- 下一篇: DSP C2000汇编语言,DSPC20