﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
814	Заменить fork()+execl() и popen() на posix_spawn()	alx	alx	"В настоящее время для запуска внешних процессов swd выполняет fork(), затем закрывает все файловые дескрипторы (кроме нужных для коммуникации) и затем выполняет execl().

Выполнение fork() - тяжелая операция, так как создается копия ""тяжелого"" процесса swd. Предлагается выполнять внешние процессы с помощью вызова posix_spawn(), который не дублирует память процесса, а блокирует родительский процесс до момента старта образа процесса-потомка. Экспериментально подтверждено, что в условиях значительного объема памяти, используемой родительским процессом, вызов posix_spawn() ведет себя лучше (работает даже когда fork() завершается с ошибкой). Вместо закрытия дескрипторов предлагается устанавливать им флаг CLOEXEC.

Аналогичным образом следует заменить вызовы popen(), также использующей fork().
"	улучшение	new	средний	2 очередь	sw			
