OpenBSD in version 5.7, which was released in May 2015, because it "always suffered from race conditions and is now unused". macOS didn't implement procfs and user space programs have to use sysctl interface for processes data. To provide binary compatibility with Linux user space programs, FreeBSD kernel also provides linprocfs that is similar to the Linux procfs. Solaris /proc in Solaris was available from the beginning. Solaris 2.6 in 1996 introduced procfs2 from Roger Faulkner. Linux Linux first added a /proc filesystem in v0.97.3, September 1992, and first began expanding it to non-process related data in v0.98.6, December 1992. As of 2020, the Linux implementation includes a directory for each running process, including kernel processes, in directories named , where is the process number. Each directory contains information about one process, including: , the command that originally started the process. , a symlink to the current working directory of the process. contains the names and values of the environment variables that affect the process. , a symlink to the original executable file, if it still exists (a process may continue running after its original executable has been deleted or replaced). , a directory containing a symbolic link for each open file descriptor. , a directory containing entries which describe the position and flags for each open file descriptor. , a text file containing information about mapped files and blocks (like heap and stack). , a binary image representing the process's virtual memory, can only be accessed by a ptrace'ing process. , a symlink to the root path as seen by the process. For most processes this will be a link to / unless the process is running in a chroot jail. contains basic information about a process including its run state and memory usage. , a directory containing hard links to any tasks that have been started by this (i.e.: the parent) process. (Users may obtain the PID with a utility such as pgrep, pidof or ps: $ ls -l /proc/$(pgrep -n python3)/fd # List all file descriptors of the most recently started `python3' process total 0 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 0 -> /dev/pts/3 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 1 -> /dev/pts/3 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 2 -> /dev/pts/3 $ readlink /proc/$(pgrep -n python3)/exe # List executable used to launch the most recently started `python3' process /usr/bin/python3.8) also includes non-process-related system