程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 編譯-python 用subprocess調用外部程序卡死

編譯-python 用subprocess調用外部程序卡死

編輯:編程綜合問答
python 用subprocess調用外部程序卡死

用subprocess.Pope()方法中stderr, stdout,參數指定為subprocess.PIPE時,程序會卡死。(具體原因還不知道)
代碼大致流程:
pipe = subprocess.Popen(args, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
pipe.wait()

已知args調用的外部程序有終止的。這裡我調用g++來編譯一段C/C++代碼。
程序到pipe.wait()卡住了。

是何原因?

最佳回答:


使用 subprocess 模塊的 Popen 調用外部程序,如果 stdout 或 stderr 參數是 pipe,並且程序輸出超過操作系統的 pipe size時,如果使用 Popen.wait() 方式等待程序結束獲取返回值,會導致死鎖,程序卡在 wait() 調用上。
ulimit -a 看到的 pipe size 是 4KB,那只是每頁的大小,查詢得知 linux 默認的 pipe size 是 64KB。

http://blog.csdn.net/carolzhang8406/article/details/22286913

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved