溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

nodejs 子進(jìn)程正確的打開方式

發(fā)布時間:2020-08-22 12:35:18 來源:腳本之家 閱讀:220 作者:依云 欄目:web開發(fā)

因為庫太拙了,需要在 nodejs 里調(diào)用子進(jìn)程來獲取數(shù)據(jù)。然而看到 child_process 的文檔真是頭疼,這么多種啟動子進(jìn)程的方法直接推到人面前,也沒個解釋,命名也十分無用。只能一個個地查看詳細(xì)說明來找到應(yīng)該使用的那個……所以我整理了一下。

首先是同步創(chuàng)建子進(jìn)程的那幾個函數(shù)。會阻塞 nodejs 的主循環(huán)。無用。(要是寫小腳本的話我直接上 shell 或者 Python 了,干嘛跟自己過不去呢。)

exec :調(diào)用 shell 來執(zhí)行命令的。這部分跟「exec」這個詞的 UNIX/C 語義剛好相反。

execFile :不調(diào)用 shell,直接執(zhí)行命令。這命名不明所以。

fork :執(zhí)行一個 新的 nodejs 進(jìn)程,并且建立一個專用的 IPC 通道。子進(jìn)程除了 IPC 通道外與父進(jìn)程無任何瓜葛!命名真是一如既往地誤人子弟。默認(rèn)使用與父進(jìn)程相同的可執(zhí)行文件(nodejs 版本),也可以另外指定。

spawn :相當(dāng)于 Python 的 subprocess,可以指定是否使用 shell。默認(rèn)不使用 shell。也支持 cwd 啊 env 啊 argv0 啊之類的參數(shù)。

結(jié)論:如果需要用 Python 的 subprocess.run / Popen 類似的功能,就使用 child_process.spawn 。 exec 開頭的那個函數(shù)似乎沒啥大用,大概跟 subprocess 的 getoutput / check_call 之類的一樣只是有一些預(yù)設(shè)而已吧。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI