
背景故事:我有一個 CLI Python 應用程式。我希望能夠在不干擾主應用程式 CLI 的情況下對其進行調試。 Python 偵錯器可讓您為偵錯器指定替代的 stdin/stdout。
我在 tmux 中開啟一個新窗格,並記下 pty 的檔名 (/dev/pts/47)。然後我打開該 pty 檔案以用 Python 進行讀寫。這似乎正朝著正確的方向發展。 tmux 窗格顯示了 Python 偵錯器的一些輸出,並回應了我輸入的一些字母,但不是全部。我假設問題是 bash 仍在 pty 中運行,並且我的一些輸入將發送到 bash,其他輸入將發送到 Python,這取決於哪個程式首先從 pty 讀取。
有沒有辦法讓 tmux/screen/其他應用程式建立 pty,但不啟動 shell,以便另一個應用程式可以接管 pty 的從屬端?這可能有效嗎?
是否有另一種更合適的方法讓程式開啟第二個 CLI 介面?
(我嘗試的另一種方法是使用 mkfifo 建立兩個命名管道,然後使用cat >/tmp/pipe_stdin | cat </tmp/pipe_stdout
。這可以工作,但是是行緩衝的,因此行編輯不起作用。)
答案1
如果我正確理解你的問題(我沒有調試 Python 的經驗),乍一看,最簡單的方法似乎是使用 2 個 shell 視窗。
在其中一個中運行偵錯器(以及要偵錯的應用程式),並將偵錯器輸入/輸出重定向到第二個。
然後,您可以控制偵錯器並在第二個 shell 中觀察其輸出,而不會影響第一個 shell 中的輸出。