nodejs 子進程正確的打開方式
因為庫太拙了,需要在 nodejs 里調(diào)用子進程來獲取數(shù)據(jù)。然而看到 child_process 的文檔真是頭疼,這么多種啟動子進程的方法直接推到人面前,也沒個解釋,命名也十分無用。只能一個個地查看詳細說明來找到應(yīng)該使用的那個……所以我整理了一下。
首先是同步創(chuàng)建子進程的那幾個函數(shù)。會阻塞 nodejs 的主循環(huán)。無用。(要是寫小腳本的話我直接上 shell 或者 Python 了,干嘛跟自己過不去呢。)
exec :調(diào)用 shell 來執(zhí)行命令的。這部分跟「exec」這個詞的 UNIX/C 語義剛好相反。
execFile :不調(diào)用 shell,直接執(zhí)行命令。這命名不明所以。
fork :執(zhí)行一個 新的 nodejs 進程,并且建立一個專用的 IPC 通道。子進程除了 IPC 通道外與父進程無任何瓜葛!命名真是一如既往地誤人子弟。默認使用與父進程相同的可執(zhí)行文件(nodejs 版本),也可以另外指定。
spawn :相當(dāng)于 Python 的 subprocess,可以指定是否使用 shell。默認不使用 shell。也支持 cwd 啊 env 啊 argv0 啊之類的參數(shù)。
結(jié)論:如果需要用 Python 的 subprocess.run / Popen 類似的功能,就使用 child_process.spawn 。 exec 開頭的那個函數(shù)似乎沒啥大用,大概跟 subprocess 的 getoutput / check_call 之類的一樣只是有一些預(yù)設(shè)而已吧。
相關(guān)文章
Nodejs進階:核心模塊net入門學(xué)習(xí)與實例講解
本篇文章主要是介紹了Nodejs之NET模塊,net模塊是同樣是nodejs的核心模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11
node版本太高導(dǎo)致項目跑不起來的解決辦法(windows)
換了臺電腦后,安裝node,一切完美,發(fā)現(xiàn)其中有一個uniapp的小程序項目跑不起來,感覺是node版本太高導(dǎo)致的,所以只能重新安裝低版本的node,本文給大家介紹了node版本太高的解決辦法,需要的朋友可以參考下2023-10-10
從Node.js事件觸發(fā)器到Vue自定義事件的深入講解
這篇文章主要給大家介紹了關(guān)于從Node.js事件觸發(fā)器到Vue自定義事件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
socket.io與pm2(cluster)集群搭配的解決方案
這篇文章主要給大家介紹了關(guān)于socket.io與pm2(cluster)集群搭配的解決方案,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來看看吧。2017-06-06
node.js實現(xiàn)websocket的即時通訊詳解
這篇文章主要介紹了深入淺出講解websocket的即時通訊,服務(wù)器可以主動向客戶端推送信息,客戶端也可以主動向服務(wù)器發(fā)送信息,是真正的雙向平等對話,屬于服務(wù)器推送技術(shù)的一種,需要的朋友可以參考下2023-05-05

