Ошибка «Файл является символической ссылкой на несуществующую цель»

При работе через два активных буфера в Emacs, sum.cpp и template.cpp я случайно отключил свой ноутбук (Ubuntu   15.04 (Vivid Vervet)) без закрытия Emacs и без сохранения этих двух файлов.

Когда я перезапустил ноутбук и перечислил содержимое каталога в Emacs на C - x C - f /C++/, я получил следующее.

Emacs

Что делает строка означает, что после. # sum.cpp?

lrwxrwxrwx  1 anupam anupam   41 Aug  6 00:53 .#sum.cpp -> anupam@anupam-Vostro-3546.3489:1438790786

Я знаю, что Emacs сохраняет несохраненный буфер # на autosave, но при доступе к #sum.cpp, почему он показывает следующее?

является символической ссылкой на несуществующую цель?

1
задан 6 August 2015 в 17:27

2 ответа

Символы - символические ссылки - это файлы, которые содержат текстовое описание того, где целевой файл относится к символической ссылке. В отличие от жестких ссылок, когда вы удаляете целевые файлы, символические ссылки пустые.

2
ответ дан 23 May 2018 в 18:28

Символическая ссылка - это всего лишь короткий текст со специальным «волшебством», происходящим в ядре при его открытии. Программы могут помещать туда любой текст, который им нужен. Является ли этот текст действительным именем пути, не имеет значения, когда создается символическая ссылка. Существование цели имеет значение только при попытке открыть символическую ссылку.

Emacs использует это несколько иначе. Он создает символическую ссылку, указывающую, что файл открыт и имеет несохраненные изменения. Если вы запустите другой экземпляр emacs, он может затем предупредить вас о предыдущем экземпляре, который уже открыл файл.

Причиной использования символических ссылок для этого вместо других методов является то, что символические ссылки также работают, если файл находится на NFS. Это также почему имя хоста находится в тексте, так что emacs будет знать, открыт ли файл на этом компьютере или на другом компьютере.

Я думаю, если вы попытаетесь снова отредактировать файл с emacs, он заметил, что файл предположительно открыт экземпляром emacs на текущем компьютере, но этот экземпляр emacs больше не существует, поэтому он должен как-то умереть. И тогда emacs может спокойно игнорировать символическую ссылку и не давать вам предупреждение.

1
ответ дан 23 May 2018 в 18:28

Другие вопросы по тегам:

Похожие вопросы: