В моей файловой системе Linux символическая ссылка указывает на 127.0.1.1:+xxxxx
.
Почему знак плюс? Может ли быть минус? Почему не просто 127.0.1.1:xxxxx
?
В моей файловой системе Linux символическая ссылка указывает на 127.0.1.1:+xxxxx
.
Почему знак плюс? Может ли быть минус? Почему не просто 127.0.1.1:xxxxx
?
Ответы:
Символические ссылки, которые не указывают на файл, вообще не имеют общего значения. В этом случае это может быть идентификатор процесса, или порт с каким-то специальным протоколом, на котором говорят, или другой идентификатор. Все зависит от того, какая программа это сделала.
Программное обеспечение, которое создает эти ссылки, просто использует преимущества того факта, что 1) цель символической ссылки может отсутствовать или даже полная ерунда; 2) создание символической ссылки - это полностью атомарная операция с одним системным вызовом (как и чтение ее цели), в отличие от создания обычного файла, который принимает как минимум 3 отдельных системных вызова.
Таким образом, создание символической ссылки может использоваться как способ блокирования (обеспечения единственного экземпляра программы), даже когда другие механизмы могут быть ненадежными. Программа не нуждается в символической ссылке для фактического разрешения в реальном файле: она заботится только о том, удастся ли создать ссылку или нет, потому что она уже существует.
fopen
, fwrite
и fclose
?
open
(или, возможно, creat
в старом программном обеспечении) write
, а close
не версии f *, которые предоставляет stdio. Но, да, вам нужно сделать как минимум open
и write
создать файл, и добавить в него что-то значимое. Теперь, если вы хотите, чтобы какой-то код «попытался создать его, если он успешен, вставил в него некоторую информацию, иначе, прочитал бы некоторую информацию из него», второй процесс мог бы просто попробовать его, read
прежде чем первый процесс сможет это сделать write
. symlink
избегает этого; либо успешно и создайте ссылку, либо потерпите неудачу и убедитесь, что readlink
есть информация для вас.
Насколько я знаю, «+» означает, что число после IP («xxxxx») относится к «идентификатору процесса» (а не к порту, который обычно использует обозначение [IP-адрес]: [номер_порта]).
Возможно, что эта «нотация» (не уверен, что я бы назвал ее «нотацией», поскольку я не знаю какой-либо «официальной» документации) относится к чему-то другому, если используется конкретным приложением - но опять же, это всегда возможность не только с символическими ссылками. Единственные случаи, о которых я знаю (и мог найти с помощью поиска, который не был слишком обширным), «+ XXXX» всегда ссылался на идентификатор процесса.
/proc
или /dev
. Можете ли вы объяснить, для чего используется эта символическая ссылка?