在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  Linux/ python中的spawn和popen方法的本質(zhì)區(qū)別?

python中的spawn和popen方法的本質(zhì)區(qū)別?

spawn指pty模塊的生成一個(gè)進(jìn)程,并將其控制終端連接至當(dāng)前進(jìn)程標(biāo)準(zhǔn)IO;Popen指subprocess模塊的生成子進(jìn)程方法。那么這二者有何區(qū)別?從操作系統(tǒng)的角度而言呢?

回答
編輯回答
抱緊我
  1. 這兩個(gè)從 Python 級(jí)別上面就不同, spawn 只是一個(gè)函數(shù),Popen是一個(gè)類;
  2. spawn 是通過 fork 方式實(shí)現(xiàn),然后子進(jìn)程執(zhí)行具體的命令,然后父進(jìn)程去獲取終端的輸出,強(qiáng)調(diào)獲取數(shù)據(jù)而已, 而 subprocess 提供更多進(jìn)程信息的管理,比如說執(zhí)行命令的狀態(tài)碼,子進(jìn)程通信和回收等;
  3. spawn 和 操作系統(tǒng)的 popen系統(tǒng)調(diào)用,反而就是有點(diǎn)類似了。
2018年6月27日 17:06
編輯回答
未命名

研究了一下源碼,發(fā)現(xiàn)spawn是通過把子進(jìn)程三個(gè)標(biāo)準(zhǔn)IO直接跟偽終端的slave端綁在一起來實(shí)現(xiàn)讀取/寫入數(shù)據(jù)的,而與管道等其他數(shù)據(jù)共享方式無關(guān)。希望能對(duì)有需要的各位有所幫助。

2017年10月15日 14:57