摘要:說明模塊是的原始模塊主要作用執行命令行命令該模塊的功能主要由函數提供區分和執行命令第一個參數是將要執行的命令,命令之間的參數使用空格分開第二個參數是回調函數,有三個參數回調中的第一個參數命令執行錯誤會有值,否則為回調中的第二個參數子進程
1.說明
child_process 模塊是 Node.js 的原始模塊:
主要作用:執行命令行命令
該模塊的功能主要由 child_process.spawn() 函數提供
2.區分exec和spawn 2-1 exec執行命令const { exec } = require("child_process"); exec("ls -la /usr", (error, stdout, stderr) => { console.log(error); console.log(stdout); console.log(stderr); });
第一個參數是將要執行的命令,命令之間的參數使用空格分開
第二個參數是回調函數,有三個參數
回調中的第一個參數:命令執行錯誤會有值,否則為null 回調中的第二個參數:子進程的正常輸出內容 回調中的第三個參數:子進程執行錯誤的輸出2-2 spawn命令
const { spawn } = require("child_process"); const ls = spawn("ls", ["-la", "/usr"]); ls.stdout.on("data", (data) => { console.log(`stdout: ${data}`); }); ls.stderr.on("data", (data) => { console.log(`stderr: ${data}`); }); ls.on("close", (code) => { console.log(`子進程退出碼:${code}`); });
第一個參數是命令
第二個參數是一個數組,數組中的每一個元素是執行命令需要的參數
2-3 兩者對比需要特別注意的是,需要獲取執行的內容需要通過流的形式來進行輸出
相同點:
都可以用來執行命令行命令
不同點:
exec 用來執行命令,命令和命令后跟的參數是寫在一個字符串中,作為函數的第一個參數
spawn 用來執行命令,命令和命令后跟的參數是分開寫的
exec 的輸出內容是在回調中輸出的,一次性分配 200K 大小的內存空間,如果超出這個大小會報錯
spawn 的輸出內容是通過流的形式進行輸出的,沒有分配空間,不會報錯
總結:spawn 比 exec 使用范圍要廣,因此,能使用 spawn 的盡量使用 spawn。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89486.html
摘要:嚴格來說,并不是單線程的。其他異步和事件驅動相關的線程通過來實現內部的線程池和線程調度。線程是最小的進程,因此也是單進程的。子進程中執行的是非程序,提供一組參數后,執行的結果以回調的形式返回。在子進程中通過和的機制來接收和發送消息。 ??node遵循的是單線程單進程的模式,node的單線程是指js的引擎只有一個實例,且在nodejs的主線程中執行,同時node以事件驅動的方式處理IO...
摘要:而且方式創建的子進程與父進程之間建立了通信管道,因此子進程和父進程之間可以通過的方式發送消息。與事件的回調函數有兩個參數和,代碼子進程最終的退出碼,如果子進程是由于接收到信號終止的話,會記錄子進程接受的值。 在介紹child_process模塊之前,先來看一個下面的代碼。 const http = require(http); const longComputation = () =>...
摘要:因為進程退出之后將不再執行事件循環,所有只有那些沒有回調函數的代碼才會被執行。此外,創建的回調函數具有隔離性,他們之間不會相互影響。我們來看的一個簡單例子,他創建了一個子進程,第一個參數是一個命令,第二個參數是回調函數,處理返回結果。 雖然node對操作系統做了很多抽象的工作,但是你還是可以直接和他交互,比如和系統中已經存在的進程進行交互,創建工作子進程。node是一個用于事件循環的線...
摘要:子進程使用反序列化消息字符串為消息對象。在調用這類方法時,遍歷列表中的實例發送內部消息,子進程列表中的對應項收到內部消息并處理返回,父進程中再結合返回結果和對應著這個類實例維護的信息,保證功能的正確性。 在 Node.js 中,當我們使用 child_process 模塊創建子進程后,會返回一個 ChildProcess 類的實例,通過調用 ChildProcess#send(mess...
摘要:在單核系統之上我們采用單進程單線程的模式來開發。由進程來管理所有的子進程,主進程不負責具體的任務處理,主要工作是負責調度和管理。模塊與模塊總結無論是模塊還是模塊,為了解決實例單線程運行,無法利用多核的問題而出現的。 前言 進程與線程是一個程序員的必知概念,面試經常被問及,但是一些文章內容只是講講理論知識,可能一些小伙伴并沒有真的理解,在實際開發中應用也比較少。本篇文章除了介紹概念,通過...
閱讀 1135·2021-11-25 09:43
閱讀 1575·2021-10-25 09:47
閱讀 2471·2019-08-30 13:46
閱讀 758·2019-08-29 13:45
閱讀 1285·2019-08-26 13:29
閱讀 2994·2019-08-23 15:30
閱讀 1109·2019-08-23 14:17
閱讀 1331·2019-08-23 13:43