Emacs

在不訪問終端的情況下保存臨時 emacs 文件

  • December 29, 2014

我正在嘗試保存 Emacs 暫存緩衝區的內容,由於終端無法訪問,我無法再訪問該內容。

在我的 Linux 機器上,我通過 ssh 連接到伺服器,並啟動了 Emacs。我的 Linux 機器現在已經凍結,但是我仍然可以看到 Emacs 程序在 ssh 連接到的伺服器上仍然存在。

有沒有辦法讓 Emacs 轉儲/保存其暫存的內容而無需直接訪問?我有兩個想法:

  1. 向程序發送信號,以便 Emacs 轉儲其核心,然後重新載入核心(然後保存從頭開始)
  2. 將擊鍵發送到程序的標準輸入,這將指示 Emacs 程序保存文件,即:通過echo "abd" > /proc/<pid>/fd/0. 我通過打開兩個終端進行了嘗試,並且擊鍵出現在目標終端上,但是 Emacs 沒有擷取它們。

我很幸運地將 gdb 附加到正在執行的程序中。大量借鑒:如何將終端附加到分離的程序?

寫文件

  1. mkfifo /tmp/some_name
  2. gdb -p [pid]
  3. (在 gdb 中):call close(0)
  4. (在 gdb 中)call open('/tmp/some_name', 0600):。此時gdb會出現掛起
  5. (從外殼):echo '(write-file "savedresults")' > /tmp/some_name
  6. (在 gbd 內):ctrl-d

臨時的內容被寫出到文件’savedresults’。有趣(write-file "savedresults")的是附加到文件中(不確定原因)。

Cx Cw 名稱

  1. mkfifo /tmp/some_name
  2. gdb -p [pid]
  3. (在 gdb 中):call close(0)
  4. (在 gdb 中)call open('/tmp/some_name', 0600):。此時gdb會出現掛起
  5. (來自 shell):(cmd="^X^Wsavedresults"通過鍵序列輸入 ^X:CTRL-V CTRL-X,與 ^W 類似”
  6. (從外殼):echo "$cmd" > /tmp/some_name
  7. (在 gbd 內):ctrl-d

內容被寫入文件’savedresults’。

引用自:https://unix.stackexchange.com/questions/169802