clone()a Linux kernel olyan rendszerszintű hívása , amely létrehozott egy folyamatfia ugyanazt a végrehajtási környezetet , mint az apja (ugyanaz a címtér). Egyes könyvtárak Linux alatt futtatják a szálakat . A gyakorlatban soha nem hívják közvetlenül, hanem egy szálkezelő könyvtáron keresztül (például a funkciót biztosító pthreads-en ). clone()phtread_create()
Ennek a funkciónak a prototípusa a következő:
#include <sched.h> int clone (int (*fn) (void *), void *child_stack, int flags, void *arg);clone()létrehoz egy új szálat, végrehajtva a paraméter által mutatott függvényt fn(ellentétben azzal, fork()ahol a végrehajtás a következő utasításon folytatódik). A paraméter child_stackaz új végrehajtási szál veremként használt memóriaterület mutatója (amelyet először egy hívásnak kell lefoglalnia malloc() ; az utolsó memóriahelyre kell mutatnia). A paraméter flagsmeghatározza, hogy a gyermek mit örököljön a szülő végrehajtási környezetéből. A paraméter argáltalános mutató az argumentumok átadására a függvény számára fn. Ez a hívás a gyermek szálazonosítóját adja vissza a sikernél, vagy -1-et a kudarcon (és errnoennek megfelelően értékelik).
Ne feledje, hogy ez a rendszerhívás a Linux kernelre vonatkozik, és nem használható más kernelek fordításához szánt kódokban.