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

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

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

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

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

2017年10月15日 14:57