Moving beyond fork() + exec()
Depuis les débuts d'Unix, la création de processus repose sur fork() puis exec() (appelés clone() et execve() sous Linux), une approche élégante mais coûteuse car fork() duplique tout l'état du processus et est souvent suivi immédiatement d'un exec() qui jette cette copie. Li Chen a proposé des "spawn templates" qui permettent de créer avec spawn_template_create() un descripteur de modèle pour un exécutable afin que le noyau mette en cache des informations et accélère les exécutions répétées du même programme. L'appel spawn_template_spawn() utilise une structure précisant argv, envp et une liste d'actions (spawn_template_action) permettant de fermer ou dupliquer des descripteurs, ouvrir des fichiers, changer le répertoire de travail ou modifier le traitement des signaux avant d'exécuter le processus. Les tests fournis montrent un gain d'environ 2 % et l'implémentation suit grosso modo le chemin fork()/exec() en conservant les contrôles habituels du noyau, mais la proposition ne sera pas acceptée sous sa forme actuelle. Les relecteurs ont recommandé de créer plutôt un processus «pristine» via pidfd avec une interface pidfd_config() pour le configurer et ainsi permettre une implémentation user-space de posix_spawn(), orientation que Chen a indiqué vouloir suivre.