On my Linux filesystem, a symlink points to 127.0.1.1:+xxxxx
.
Why the plus sign? Could there also be a minus? Why not just 127.0.1.1:xxxxx
?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityOn my Linux filesystem, a symlink points to 127.0.1.1:+xxxxx
.
Why the plus sign? Could there also be a minus? Why not just 127.0.1.1:xxxxx
?
Symbolic links which don't point to a file have no generic meaning at all. In this case it might be the process ID, or a port with some special protocol spoken over it, or another identifier. It all depends on what program made it.
Software which creates these links simply takes advantage of the facts that 1) a symlink's target may be non-existent or even total nonsense; 2) creating a symlink is a single-syscall completely atomic operation (as is reading its target), unlike creating a regular file which takes at least 3 separate system calls.
Thus symlink creation can be abused as a way of locking (ensuring single instance of a program) even when other mechanisms may be unreliable. The program doesn't need the symlink to actually resolve to a real file: it only cares about whether creating the link succeeds, or whether it fails due to it already existing.
fopen
, fwrite
, and fclose
?
open
(or maybe creat
in old software), write
, and close
, not the f* versions that stdio provides. But, yes, you need to do at least open
and write
to create the file and put something meaningful into it. Now if you want some code to "try to create it, if successful, put some information into it, else, read some information from it", the second process could just try its read
before the first process has a chance to write
. symlink
avoids that; either succeed and create the link, or fail and be sure readlink
has the information for you.
Oct 4, 2018 at 19:50
As far as I know the "+" means that the number after the IP (the "xxxxx") refers to a "process ID" (not a port which usually uses the notation [IP-address]:[portnumber]).
It is possible that this "notation" (not sure I would call it a "notation" since I don't know of any "official" documentation) refers to something else if used by a specific application - but then again, that's always the possibility not only with symlinks. The only cases I know of (and could find with a search that wasn't too extensive) the "+XXXX" always refered to the process ID.
/proc
or /dev
. Can you explain what this symlink is used for?