Emacs
在不訪問終端的情況下保存臨時 emacs 文件
我正在嘗試保存 Emacs 暫存緩衝區的內容,由於終端無法訪問,我無法再訪問該內容。
在我的 Linux 機器上,我通過 ssh 連接到伺服器,並啟動了 Emacs。我的 Linux 機器現在已經凍結,但是我仍然可以看到 Emacs 程序在 ssh 連接到的伺服器上仍然存在。
有沒有辦法讓 Emacs 轉儲/保存其暫存的內容而無需直接訪問?我有兩個想法:
- 向程序發送信號,以便 Emacs 轉儲其核心,然後重新載入核心(然後保存從頭開始)
- 將擊鍵發送到程序的標準輸入,這將指示 Emacs 程序保存文件,即:通過
echo "abd" > /proc/<pid>/fd/0
. 我通過打開兩個終端進行了嘗試,並且擊鍵出現在目標終端上,但是 Emacs 沒有擷取它們。
我很幸運地將 gdb 附加到正在執行的程序中。大量借鑒:如何將終端附加到分離的程序?
寫文件
mkfifo /tmp/some_name
gdb -p [pid]
- (在 gdb 中):
call close(0)
- (在 gdb 中)
call open('/tmp/some_name', 0600)
:。此時gdb會出現掛起- (從外殼):
echo '(write-file "savedresults")' > /tmp/some_name
- (在 gbd 內):
ctrl-d
臨時的內容被寫出到文件’savedresults’。有趣
(write-file "savedresults")
的是附加到文件中(不確定原因)。Cx Cw 名稱
mkfifo /tmp/some_name
gdb -p [pid]
- (在 gdb 中):
call close(0)
- (在 gdb 中)
call open('/tmp/some_name', 0600)
:。此時gdb會出現掛起- (來自 shell):(
cmd="^X^Wsavedresults"
通過鍵序列輸入 ^X:CTRL-V CTRL-X,與 ^W 類似”- (從外殼):
echo "$cmd" > /tmp/some_name
- (在 gbd 內):
ctrl-d
內容被寫入文件’savedresults’。