У символьному посиланні, що вказує на "127.0.1.1:+xxxxx", для чого символ плюс?


52

У моїй файловій системі Linux вказівка ​​символьного посилання на 127.0.1.1:+xxxxx.

Чому знак плюс? Чи може бути і мінус? Чому б не просто 127.0.1.1:xxxxx?


Чи є це символічне посилання під / proc?
Джошуа

4
@Joshua: швидше за все, під ~ / .mozilla / або подібним. Firefox / Thunderbird та iirc Steam використовують такі посилання для блокування.
grawity

2
Чи число xxxxx чи символи xxxxx?
Мавг

2
Можливо, не пов’язаний, але лише для інформації. У деяких клієнтів IRC знак плюс до того, як був порт, вказує, що віддалений сервер використовує SSL / TLS.
eKKiM

Відповіді:


93

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

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

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


5
"* на відміну від створення звичайного файлу, який займає щонайменше 3 окремих системних виклику. *" - Чи можете ви уточнити? Ви маєте в виду fopen, fwriteі fclose?
Нік Хартлі

11
@NicHartley: Системні дзвінки є open(або, можливо, creatу старому програмному забезпеченні) write, і close, не, версія f *, яку надає stdio. Але, так, вам потрібно зробити щонайменше openі writeстворити файл і вкласти в нього щось значуще. Тепер, якщо ви хочете, щоб якийсь код "спробувати створити його, якщо він успішний, вкладіть в нього деяку інформацію, а ще прочитайте з нього деяку інформацію", другий процес може просто спробувати його readдо того, як перший процес має шанс write. symlinkуникає цього; або досягти успіху, і створити посилання, або зазнати невдачі та бути впевненим readlink, що інформація має для вас
Гунтрам Блом підтримує Моніку

"... можна зловживати як спосіб ..." Чи це зловживання як "використано таким чином, яким воно не було призначене для використання" або "використовується таким чином, як воно не повинно бути використане"?
Хлопець з капелюхом

22

Наскільки я знаю, "+" означає, що число після IP ("xxxxx") означає "ідентифікатор процесу" (не порт, який зазвичай використовує позначення [IP-адреса]: [portnumber]).

Цілком можливо, що це "позначення" (не впевнений, що я би назвав це "позначенням", оскільки я не знаю жодної "офіційної" документації) стосується чогось іншого, якщо його використовує конкретна програма - але знову ж таки, це завжди можливість не тільки за допомогою посилань. Єдині випадки, про які я знаю (і які можна було знайти при не надто широкому пошуку), "+ XXXX" завжди посилався на ідентифікатор процесу.


1
Я просто перевірив це. У моєму випадку це дійсно так.
myMethod

1
Чи є десь документація такого формату, на яку ви могли б посилання?
David Z

1
Не впевнений, я просто пам'ятаю це з практичного досвіду.
Альбін

2
Це здається, що ви говорите про симпосилання в спеціальному каталозі, як-от /procабо /dev. Чи можете ви пояснити, для чого використовується ця символьна посилання?
Бармар

4
Це перший раз, коли я бачив цю нотацію взагалі, тому я здивований, коли ви говорите, що це загальне позначення. Де ви бачили, як це означало ідентифікатор процесу?
Бармар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.