Clone (chiamata di sistema Linux): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riscritto incipit, aggiunta evidenziazione sintattica del codice, aggiunte voci correlate, paragrafata voce, rimosso avviso ofanilità
 
(13 versioni intermedie di 11 utenti non mostrate)
Riga 1:
{{F|informatica|software libero|luglio 2015}}
 
<code>'''clone()'''</code> è una [[chiamata di sistema]] del [[Linux (kernel)|kernel Linux]] che replica il [[Processo (informatica)|processo]] che la invoca, permettendogli di condividere con il nuovo processo parte del suo contesto d'esecuzione. Il costrutto, simile alla <code>[[Fork (programmazione)|fork]]()</code> dei sistemi operativi della [[Unix-like|UNIX compatibili]], che invece duplica processi per intero, è solitamente utilizzato per realizzare [[Concorrenza (informatica)|concorrenza]] a livello di [[Thread (informatica)|thread]], anziché di processo, sebbene per tali scopi spesso siano preferite alternative a più alto livello, come i [[ThreadPOSIX POSIXThreads]].
<code>'''clone()'''</code> è una [[chiamata di sistema]] del [[kernel]] [[Linux (kernel)|Linux]]
che replica il [[Processo (informatica)|processo]] che la invoca, permettendogli di condividere con il nuovo processo parte del suo contesto d'esecuzione.
Il costrutto, simile alla <code>[[Fork (programmazione)|fork]]()<code> dei sistemi operativi della [[Unix-like|UNIX compatibili]], che invece duplica processi per intero, è solitamente utilizzato per realizzare [[Concorrenza (informatica)|concorrenza]] a livello di [[Thread (informatica)|thread]], anziché di processo, sebbene per tali scopi spesso siano preferite alternative a più alto livello, come i [[Thread POSIX]].
 
==Funzionamento==
 
La sintassi per chiamare <code>clone</code> all'interno di un programma in ambiente Linux è:
<syntaxhighlight lang="c">
Riga 13 ⟶ 10:
</syntaxhighlight>
 
<code>clone</code> avvia un nuovo [[Thread (informatica)|thread]] che inizia con la funzione referenziata dall'argomento <code>fn</code> argument (laddove il comando <ttkbd>[[fork (programmazione)|fork]]()</ttkbd> prosegue con l'istruzione immediatamente successiva al <ttkbd>fork()</ttkbd>.) L'argomento <code>child_stack</code> è un puntatore allo spazio di memoria da usare come [[pila (informatica)|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, <code>flags</code> specifica quali parti del processo sono ereditate dal processo genitore e <code>arg</code> è l'argomento passato alla funzionafunzione. Il valore di ritorno è l'ID del [[processo (informatica)|processo]] figlio, oppure -1 in caso di errore.
 
==Voci correlate==
* [[Thread (informatica)|Thread]]
* [[Fork (programmazione)|Fork]]
* [[Linux (kernel)]]
 
{{Portale|software libero}}
[[Categoria:Linux]]
 
[[Categoria:Software per il kernel Linux]]
[[Categoria:Funzioni della libreria standard del C]]