52

В моей файловой системе Linux символическая ссылка указывает на 127.0.1.1:+xxxxx .

Почему знак плюс? Может ли быть минус? Почему не просто 127.0.1.1:xxxxx?

2 ответа2

95

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

Программное обеспечение, которое создает эти ссылки, просто использует преимущества того факта, что 1) цель символической ссылки может отсутствовать или даже полная ерунда; 2) создание символической ссылки - это полностью атомарная операция с одним системным вызовом (как и чтение ее цели), в отличие от создания обычного файла, который принимает как минимум 3 отдельных системных вызова.

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

22

Насколько я знаю, «+» означает, что число после IP ("xxxxx") относится к "идентификатору процесса" (а не к порту, который обычно использует обозначение [IP-адрес]:[номер_порта]).

Возможно, что эта "нотация" (не уверен, что я бы назвал ее "нотацией", поскольку я не знаю какой-либо "официальной" документации) относится к чему-то другому, если используется конкретным приложением - но опять же, это всегда возможность не только с символическими ссылками. Единственные случаи, о которых я знаю (и мог найти с помощью поиска, который не был слишком обширным), «+XXXX» всегда ссылался на идентификатор процесса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .