Да, черезmemfd_create
иfexecve
:
int fd = memfd_create("foo", MFD_CLOEXEC);
// write your image to fd however you want
fexecve(fd, argv, envp);
Нет и да, emerge
как и pacman
не рекомендует использовать несколько экземпляров. Блокировка создается на этапе проверки зависимостей (, затем граф зависимостей помещается в ОЗУ )и на этапе установки, но не на этапе компиляции, как отметил @Eduardo, это позволяет выполнять несколько запусковemerge
(и одиночный пишет в vdb
, но один и тот же пакет может быть скомпилирован дважды, что некоторые считают контрпродуктивным. Большинство пользователей предпочитают использовать опцию --keep-going
в случае поломки.
Чтобы ускорить emerge --newuse --update
, рассмотрите возможность использования опции --jobs
. См. Параллельные сборки с Gentoo's Emerge и взгляните наman emerge
Из вопроса Можно ли одновременно запускать несколько команд emerge? на форуме Gentoo.
Yes, I have run emerge in different VT's simultaneously. Caution: If the emerge's want to install the same thing or the same dependencies, each will calculate what needs to be done only once depending on the predicate of your command. Example if you are building @world in one VT then start @system in the other, you may well be emerging the same rging twice, say if calculate gcc needs updating in the first and the second, both will emerge gcc independently. Portage only checks once for each invocation.
Основная проблема заключается в том, что даже если все работает, вы можете тратить ресурсы впустую, многократно перестраивая одно и то же, что замедляет работу всего остального.