Clone (chiamata di sistema Linux)
# Clone (chiamata di sistema Linux)

clone è una chiamata di sistema del kernel Linux che replica il processo che la invoca, permettendogli di condividere con il nuovo processo parte del suo contesto d'esecuzione. Il costrutto, simile alla fork dei sistemi operativi della UNIX compatibili, che invece duplica processi per intero, è solitamente utilizzato per realizzare concorrenza a livello di thread, anziché di processo, sebbene per tali scopi spesso siano preferite alternative a più alto livello, come i POSIX Threads.

## Funzionamento

La sintassi per chiamare clone all'interno di un programma in ambiente Linux è:

clone avvia un nuovo thread che inizia con la funzione referenziata dall'argomento fn argument (laddove il comando fork prosegue con l'istruzione immediatamente successiva al fork. L'argomento child_stack è un puntatore allo spazio di memoria da usare come stack del nuovo thread (che dovrà essere stato creato tramite malloc; in quasi tutte le architetture lo stack 'cresce' verso il basso, per cui il puntatore dovrà puntare alla fine dello spazio a disposizione, flags specifica quali parti del processo sono ereditate dal processo genitore e arg è l'argomento passato alla funzione. Il valore di ritorno è l'ID del processo figlio, oppure -1 in caso di errore.

