.\" Copyright (C) 2007 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 2007-10-23 mtk: moved the _syscallN specific material to the .\" new _syscall(2) page, and substantially enhanced and rewrote .\" the remaining material on this page. .\" .\" Traduzione in italiano di Giovanni Bortolozzo .\" Ottobre 1996 .\" Aggiornamento alla versione 1.15 di Alessandro Rubini (rubini@linux.it) .\" Maggio 1997 .\" Revisione e aggiornamento di Giulio Daprelà .\" ottobre 2005 .\" Aggiornamento a man pages 2.26 di Giulio Daprelà - aprile 2006 .\" Aggiornamento a man pages 2.68 di Elisabetta Galli .\" novembre 2007 .\" Aggiornamento a man-pages-3.53 di Marco Curreli .\" agosto 2013 .\" Aggiornamento a man-pages-3.61 di Marco Curreli - marzo 2014 .\" .TH INTRO 2 2014-02-20 "Linux" "Linux Programmer's Manual" .SH NOME intro \- Introduzione alle chiamate di sistema .SH DESCRIZIONE La sezione 2 del manuale descrive le chiamate di sistema di Linux. Una chiamata di sistema è un punto d'ingresso nel kernel Linux. Di solito le chiamate di sistema non vengono invocate direttamente: invece, la maggior parte delle chiamate di sistema hanno corrispondenti funzioni-contenitore nella libreria C che compiono i passi richiesti (per esempio, passare in modalità kernel) per invocare la chiamata di sistema. Così, effettuare una chiamata di sistema assomiglia ad invocare una normale libreria di sistema. In molti casi, la funzione contenitore della libreria C non fa niente di più che: .IP * 3 copiare argomenti e il numero che individua la chiamata di sistema nei registri dove il kernel si aspetta che siano; .IP * passare in modalità kernel, nel punto in cui il kernel fa il lavoro reale della chiamata di sistema; e .IP * impostare .I errno se la chiamata di sistema restituisce un numero di errore quando il kernel fa tornare la CPU alla modalità utente (user mode). .LP Comunque, in alcuni casi, una funzione contenitore può fare molto di più, per esempio, può effettuare alcune pre-elaborazioni degli argomenti prima di passare in modalità kernel, o può effettuare post-elaborazioni di valori restituiti attraverso la chiamata di sistema. Se del caso, le pagine di manuale della Sezione 2 normalmente cercano di far rilevare i dettagli sia dell'interfaccia API della libreria C (di solito GNU) che della chiamata di sistema diretta. Più comunemente, la DESCRIZIONE principale verterà sull'interfaccia della libreria C, e le differenze per la chiamata di sistema verranno trattare nella sezione NOTE. Per una lista delle chiamate di sistema di Linux vedere .BR syscalls (2). .SH VALORE RESTITUITO In caso di errore la maggior parte delle chiamate di sistema restituisce un numero di errore negativo (cioè il valore opposto di una delle costanti definite in .BR errno (3)). Il contenitore (wrapper) della libreria C nasconde questo dettaglio al chiamante: quando una chiamata di sistema restituisce un valore negativo, il contenitore copia il valore assoluto nella variabile .IR errno , e restituisce \-1 come valore restituito dal contenitore. Il valore restituito da una chiamata di sistema eseguita con successo dipende dalla chiamata stessa. Molte chiamate di sistema restituiscono 0, ma alcune possono restituire valori diversi da zero in caso di successo. I dettagli sono descritti nelle singole pagine di manuale. In alcuni casi il programmatore deve definire una macro con funzionalità di test per ottenere la dichiarazione di una chiamata di sistema dal file di intestazione specificato nella sezione SINTASSI della pagina di manuale. (Ove richieste, queste macro con funzionalità di test devono essere definite prima di includere .I un qualsiasi file di intestazione). In questi casi la macro richiesta è descritta nella pagina di manuale. Per maggiori informazioni sulle macro di test si veda .BR feature_test_macros (7). .SH CONFORME A Alcuni termini e abbreviazioni vengono usati per indicare varianti di Unix e standard ai quali le chiamate descritte in questa sezione si adeguano. Vedere .BR standards (7). .SH NOTE .SS Chiamata diretta In molti casi, non è necessario invocare direttamente una chiamata di sistema, ma alcune volte la libreria C Standard non implementa una funzione che soddisfi le proprie necessità. In questo caso il programmatore deve invocare manualmente la chiamata di sistema usando .BR syscall (2). Storicamente era possibile farlo anche usando una delle macro di _syscall descritte in .BR _syscall (2). .SS Autori e termini di copyright Si veda l'intestazione del sorgente della pagina di manuale per l'autore e per le condizioni di copyright. Si noti che possono essere diversi da pagina a pagina. .SH VEDERE ANCHE .ad l .nh .BR _syscall (2), .BR syscall (2), .BR syscalls (2), .BR errno (3), .BR intro (3), .BR capabilities (7), .BR credentials (7), .BR feature_test_macros (7), .BR mq_overview (7), .BR path_resolution (7), .BR pipe (7), .BR pty (7), .BR sem_overview (7), .BR shm_overview (7), .BR signal (7), .BR socket (7), .BR standards (7), .BR svipc (7), .BR symlink (7), .BR time (7) .SH COLOPHON Questa pagina fa parte del rilascio 3.73 del progetto Linux .IR man-pages . Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trova su \%http://www.kernel.org/doc/man\-pages/. La versione italiana fa parte del pacchetto .I man-pages-it v. 3.73, a cura di: ILDP "Italian Linux Documentation Project" \%http://www.pluto.it/ildp .br Per la traduzione in italiano si pu\(`o fare riferimento a http://www.pluto.it/ildp/collaborare/ .br Segnalare eventuali errori di traduzione a .IR ildp@pluto.it