nodejs 子進(jìn)程正確的打開方式
因?yàn)閹焯玖耍枰?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è)而已吧。
相關(guān)文章
NodeJs實(shí)現(xiàn)簡單的爬蟲功能案例分析
爬蟲,是一種按照一定的規(guī)則,自動地抓取網(wǎng)頁信息的程序或者腳本。這篇文章通過一個案例給大家分享NodeJs實(shí)現(xiàn)簡單的爬蟲功能,感興趣的朋友一起看看吧2018-12-12node作為中間服務(wù)層如何發(fā)送請求(發(fā)送請求的實(shí)現(xiàn)方法詳解)
node作為中間服務(wù)層如何發(fā)送請求?下面小編就為大家分享一下發(fā)送請求的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助2018-01-01node.js+Ajax實(shí)現(xiàn)獲取HTTP服務(wù)器返回?cái)?shù)據(jù)
這篇文章主要介紹了node.js+Ajax實(shí)現(xiàn)獲取HTTP服務(wù)器返回?cái)?shù)據(jù),講解的十分詳細(xì),也給出了很多的實(shí)例,是篇非常不錯的文章,這里推薦給大家。2014-11-11Node.js實(shí)現(xiàn)批量去除BOM文件頭
這篇文章主要介紹了Node.js實(shí)現(xiàn)批量去除BOM文件頭,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12node.js中的events.emitter.removeListener方法使用說明
這篇文章主要介紹了node.js中的events.emitter.removeListener方法使用說明,本文介紹了events.emitter.removeListener的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12