pub fn unshare_thread_group() -> Result<(), Errno>Expand description
Demande au noyau si le processus appelant est seul dans son groupe de fils :
unshare(CLONE_THREAD) (ADR-186 D1).
Quand l’appelant est seul, il n’y a rien à défaire : l’appel réussit et ne change
rien. Quand le groupe compte une autre tâche, le noyau refuse avec EINVAL
(unshare(2), « CLONE_THREAD … was specified in flags, and the caller is
multithreaded »). C’est le noyau qui compte, sans lire aucun chemin : ni /proc,
ni Landlock n’interviennent.
Ce que le noyau compte comme « une autre tâche » — mesuré le 2026-09-26 (ADR-186 §1.3) :
- tout fil ordinaire vivant ;
- un fil de travail d’io_uring (
iou-wrk-…), qui ne disparaît plus une fois créé, même anneau fermé — alors qu’il n’exécute jamais de code utilisateur ; - un fil qui vient de se terminer, un court instant après son
join.
La réponse ne se trompe donc que dans un sens : elle peut dire « plusieurs » quand aucun fil utilisateur ne vit, jamais « seul » quand il y en a un.
§Errors
Errno::EINVAL: le groupe de fils compte au moins une autre tâche (voir ci-dessus). C’est la réponse « non », pas une panne.- Toute autre erreur est celle du noyau ou d’un filtre seccomp (par exemple un
filtre qui rend
EPERM) : elle ne dit rien du nombre de fils.