我無法保持子流程創建的用於激發多個命令的隧道。
第一我試圖此執行一個子流程如何讓一個子進程繼續運行並在python中繼續提供輸出呢?
command=['gdb']
process=subprocess.Popen(command,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
(out,err)=process.communicate("""file demo
b main
r
""")
print out
然後我在第一種情況下嘗試這種
command=['gdb']
process=subprocess.Popen(command,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
process.stdin.write("b main")
process.stdin.write("r")
print repr(process.stdout.readlines())
process.stdin.write("n")
print repr(process.stdout.readlines())
process.stdin.write("n")
print repr(process.stdout.readlines())
process.stdin.write("n")
print repr(process.stdout.readlines())
process.stdin.close()
它執行這些命令,然後退出所述GDB使得不可能保持suplying命令入庫和在第二種情況下,它不會在b main
命令(即gdb退出)後執行。
因此,我如何繼續從程序給我更多的命令給gdb,因爲我需要。以及如何在每個命令執行後獲得gdb的輸出。
命令給予GDB在一開始並不知道他們只能通過Python程序的用戶,以便通過長串在 process.communicate
不會幫助
它給AttributeError的'用POPEN(命令,標準輸出=管,標準輸入= PIPE)爲PROC: AttributeError的:__exit__' – kar09
我不想在旅途中執行多個命令。執行一個命令並得到它的輸出,然後執行下一個命令,這個命令將由用戶給出並得到它的輸出等是很重要的。只是在外出時執行10-20個不同的命令並不是必需的,但我希望保持子進程處於活動狀態,然後向其中添加文本命令,我該怎麼做? – kar09
with語句應該在您讀取和寫入時保持進程正常運行。問題在於,您在嘗試獲取所有輸出時沒有提供輸出的通信方法(無返回值) –