В дополнении к ответу cjm Единственная Спецификация Unix определяет названную функцию vfork()
. Та функция работает как ветвление, за исключением того, что разветвленный процесс имеет неопределенное поведение, если это делает что-нибудь кроме попытки, вызывающей функцию семейства должностных лиц или вызов _exit()
.
Таким образом в значительной степени единственное использование с определенным поведением:
pid_t ret = vfork();
if(ret == 0)
{
exec(...);
_exit(EXIT_FAILURE); //in case exec failed for any reason.
}
Таким образом, что делает vfork
? Это, недорогое fork
. В implemenations без копии на записи получающийся процесс совместно использует пространство памяти с исходным процессом (следовательно неопределенное поведение). В реализациях с копией на записи, vfork
разрешен быть идентичным fork()
, так как реализации копии на записи быстры.
Существует также дополнительное posix_spawn
функция (и a posix_spawnp
функция), который может непосредственно создать новый процесс. (Также допустимо реализовать их с использованием вызова библиотеки fork
и exec
, и реализация в качестве примера обеспечивается.)
Правильная команда: echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Поскольку Вы должны иметь 0 на 'всех' и на 'interface_name' для отключения его.
В /etc/sysctl.conf
или подобный файл, необходимо установить 'все' + 'значение по умолчанию' (или 'все' +, 'интерфейс' кроме интерфейса не может уже существовать, когда этот файл обрабатывается).
all
не перезаписывает, это делает битовые операции. См. этот ответ оall
по сравнению с.default
.send_redirects
OR
параметр, таким образом устанавливаяall.send_redirects
к 0 будет превзойден установкой интерфейса. – Leif Arne Storset 07.02.2018, 18:46