[[_process_descriptor_api_completion]]
=== Завершение разработки API дескрипторов процессов

Контакт: Konstantin Belousov <kib@FreeBSD.org>

FreeBSD давно предлагает средство «дескрипторов процессов» (Process Descriptors).
Основное его использование — в песочницах Capsicum, где для работы с объектом требуется дескриптор, и дескриптор процесса предоставляет такой дескриптор.
Другие операционные системы предоставляют аналогичное средство под тем же именем.
Предлагаемый API был неполным, основным недостающим элементом был системный вызов man:pdwait[2], аналог семейства man:wait[2], который работает с дескриптором процесса вместо идентификатора процесса.

Описываемый проект добавил вызов man:pdwait[2].
Другим важным дополнением стал вызов man:pdrfork[2], который обеспечивает такую же детальную поддержку создания копий процессов, как и man:rfork[2], но также возвращает дескриптор процесса в качестве дескриптора, подобно man:pdfork[2].

После добавления pdwait и pdrfork стали возможны естественные расширения для средств man:posix_spawn[3].
Теперь атрибут man:posix_spawnattr_setprocdescp_np[3] требует, чтобы man:posix_spawn[3] возвращал дескриптор процесса.
Другим естественным дополнением стал man:posix_spawnattr_setexecfd_np[3], который указывает исполняемый образ через дескриптор файла вместо имени.

В совокупности новые добавленные функции делают дескриптор процесса полным и позволяют использовать posix_spawn в песочницах.

Спонсор: Фонд FreeBSD

//
// The FreeBSD Russian Documentation Project
//
// Original EN revision (18.04.2026): e267cce5a5b5c2f7f56c558e9ac1e757aa605521
//
