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

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

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

Screenshot from Emacs on Ubuntu

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

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

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

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

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

3 ответа

Сохраненный автоматически файл #sum.cpp#. символьная ссылка .#sum.cpp используется Emacs, чтобы хранить некоторые внутренние данные (походит на имя пользователя, имя хоста и некоторую метку времени)

, Поскольку цель символьной ссылки является просто некоторым кратким текстом (который разрешен как путь, если Вы получаете доступ к содержанию символьной ссылки), символьные ссылки иногда используются для хранения небольших объемов данных. В этом случае цель, скорее всего, не является путем правильного файла, и Вы получаете ошибку, при попытке получить доступ к ней.

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

5
ответ дан 2 December 2019 в 01:33

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

2
ответ дан 2 December 2019 в 01:33

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

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

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

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

1
ответ дан 2 December 2019 в 01:33

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

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