我寫了一個簡單的調試程序,可以執行控制檯程序並將其輸出發送到「out」和「err」文件,並從「in」文件中檢索其輸入。現在,我想擴展它的功能來運行Python腳本。爲了做到這一點,我想我可以讓調試器運行Python解釋器,並且僅僅通過文件來連接Python解釋器。重定向Python解釋器的IO
但是當我在調試器中運行Python解釋器時,我看不到任何像普通程序那樣的輸出。調試器有非常詳細的錯誤日誌記錄,並且在錯誤日誌文件中沒有看到任何錯誤。
我使用了「ps -A」,它確實出現了調試器已經啓動了Python解釋器,原因有兩個:1)進程ID不同1和2)調試器一旦我終止-9 python解釋器(它告訴文件描述符已連接)。這裏的PS - 所有的輸出:
1 R 0 1565 1 88 80 0 - 1040 - pts/0 00:01:45 debugger
0 S 0 1566 1565 0 80 0 - 7782 pipe_w pts/0 00:00:00 python.out
並啓動調試器像這樣(python.out是Python解釋器的副本):
debugger python.out
所以我想我的問題是,不任何人都知道爲什麼這不起作用? Python解釋器是否對其標準文件描述符做了奇怪的事情?
編輯:
我還注意到,使用python.out不能重定向其IO python.out> out_file - 其可以或可以不與調試器具有的問題。
調試器不使用塊緩衝。
下面是一些IO信息的/ proc/PID/IO:
調試器(我寫了一些數據,長度爲21,進入 「中的」 文件)
rchar: 21
wchar: 21
syscr: 300222462
syscw: 1
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0
的Python解釋
rchar: 517268
wchar: 0
syscr: 93
syscw: 0
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0
什麼是_「一個標準的.out程序」_,以及如何將其IO重定向到文件中?當然,輸入來自'.in'文件?或者你是否在開發流,將它發送到'.in'和python進程? – Eric 2013-05-05 00:06:17
標準.out程序,在這種情況下,它是一個使用IO的std文件描述符的程序。我會編輯我的問題,以更準確地回答您的問題。 – tay10r 2013-05-05 00:19:56
什麼是python.out? – 2013-05-05 00:33:30