+FreeBSD offered the Process Descriptors facility for long time.
+Its main use is in the Capsicum sandboxes where the handle is required to operate on an object, and process descriptor provided such handle.
+Other operating systems provide similar facility under the same name.
+The offered API was not complete, main lacking part being the man:pdwait[2] system call, the analog of man:wait[2] family, which operates on the process descriptor instead of the process id.
+
+The described project added man:pdwait[2] call.
+Another important addition was the man:pdrfork[2] call, which provides the same fine-grained support for process copy construction as man:rfork[2], but also returns the process descriptor as the handle, like man:pdfork[2].
+
+After pdwait and pdrfork addition, the natural extensions for the man:posix_spawn[3] facilities were possible.
+Now the man:posix_spawnattr_setprocdescp_np[3] attribute requests that man:posix_spawn[3] returned process descriptor.
+Another natural addition was man:posix_spawnattr_setexecfd_np[3] which specifies the executable image by file descriptor instead of the name.
+
+Together, the newly added features make the process descriptor complete and allow the use of posix_spawn in the sandboxes.