QNX/UNIX: Анатомия параллелизма
QNX/UNIX: Анатомия параллелизма читать книгу онлайн
Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса. Некоторые из результатов испытаний тестовых примеров будут большим сюрпризом даже для самых бывалых программистов. Тем не менее излагаемые техники вполне доступны и начинающим программистам: для изучения материала требуется базовое знание языка программирования C/C++ и некоторое понимание «устройства» современных многозадачных ОС UNIX.
В качестве «испытательной площадки» для тестовых фрагментов выбрана ОСРВ QNX, что позволило с единой точки зрения взглянуть как на специфические механизмы микроядерной архитектуры QNX, так и на универсальные механизмы POSIX. В этом качестве книга может быть интересна и тем, кто не использует (и не планирует никогда использовать) ОС QNX: программистам в Linux, FreeBSD, NetBSD, Solaris и других традиционных ОС UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Большинство форм функции
exec()spawn()spawn()Функции семейства
exec()fork()Функции семейства
spawn()spawn()procntoБазовый вызов
spawn()
#include <spawn.h>
pid_t spawn(const char* path, int fd_count, const int fd_map[],
const struct inheritance* inherit, char* const argv[],
char* const envp[]);где
path
fd_countfd_map
fd_mapfd_countOPEN_MAXfd_mapfd_countfd_countPD_CLOEXECfcntl()
inheritstruct inheritance
unsigned long flags
SPAWN_CHECK_SCRIPTspawn()pathpath
SPAWN_SEARCH_PATHPATHpath
SPAWN_SETGROUPpgroup
SPAWN_SETNDndon
SPAWN_SETSIGDEFsigdefault
SPAWN_SETSIGMASKsigmask
pid_t pgroupSPAWN_SETGROUPSPAWN_SETGROUPinherit.pgroupSPAWN_NEWPGROUP
sigset_t sigmaskSPAWN_SETSIGMASK
sigset_t sigdefaultSPAWN_SETSIGDEF
uint32_t ndSPAWN_SETND
argvargv[0]char*NULLargvNULLargvNULL
envpenvpNULLchar*envpNULLЕсли дочерний процесс является скриптом интерпретатора (флаг
SPAWN_CHECK_SCRIPT#!
