У моїй файловій системі 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-адреса]: [portnumber]).
Цілком можливо, що це "позначення" (не впевнений, що я би назвав це "позначенням", оскільки я не знаю жодної "офіційної" документації) стосується чогось іншого, якщо його використовує конкретна програма - але знову ж таки, це завжди можливість не тільки за допомогою посилань. Єдині випадки, про які я знаю (і які можна було знайти при не надто широкому пошуку), "+ XXXX" завжди посилався на ідентифікатор процесу.
/proc
або /dev
. Чи можете ви пояснити, для чого використовується ця символьна посилання?