Different operating systems use different mechanisms to make a process's internal state visible in the file hierarchy. In particular, this applies to making each process's file-descriptors accessible.

In most Linux distributions, /dev/fd is a symbolic link to /proc/self/fd, where /proc is a special file-system synthesized by the kernel. Within that, self is a symlink to each process's own process ID, and /proc/$PID/fd/$FD is a pseudo file representing the open file-descriptor $FD for the process $PID.

Those pseudo files appear to by symlinks to the original filename by which the file descriptor was opened, but otherwise accessing the file accesses the underlying original file, even if the target of the symlink has been deleted or replaced. The permissions on the link indicate whether the file descriptor is open for reading, writing or both.

In other operating systems, /dev/fd/$FD may simlarly appear to be a symlink, or it may be represented as a block or character device, with no particular association with the original filename.