Linux
Docker附加到curses程序
我正在嘗試使用
docker attach
附加到基於curses的圖形過程:$ docker run --name irssi -it pandrew/irssi irssi
當您使用它從這個過程中分離
^P^Q
並重新附加時,docker attach irssi
它看起來像沒有發生任何事情。但是,該過程確實會重新附加,因為您可以鍵入命令並慢慢地通過觸發重繪來建構圖形界面備份。然而,重新附加後程序的行為很奇怪。但是,如果您最初在 a 中執行該程序
screen
,則一切正常:$ docker run --name irssi -it ${PREVIOUS_IMAGE_PLUS_SCREEN} screen irssi
您可以從容器中分離和重新連接,並且有關 screen 的某些內容會導致 irssi 會話表現良好。irssi 似乎有一定的能力檢查它是否“臟”,並重繪螢幕:https ://github.com/irssi/irssi/blob/master/src/fe-text/irssi.c#L123 .
誰能幫忙解釋這裡發生了什麼?謝謝你。
當您重新附加到全屏應用時,該應用需要重繪。螢幕擅長確定何時重新連接並重新繪製自身 - 通常通過偵聽 SIGWINCH 來指示終端大小已更改。它可能有一些額外的功能來監控它的終端,使它能夠在 irssi 沒有的地方成功。
根據irssi 提示頁面中的最後一條建議,您應該能夠輸入
/redraw
irssi 來重繪螢幕,或者將其綁定到 ^L with/bind ^L redraw
。