intro - introducción a las llamadas al sistema
La sección 2 de este manual describe las llamadas del sistema de Linux.
Una llamada del sistema es un punto de entrada al núcleo de Linux. En
general, dichas llamadas no son invocadas directamente sino que la biblioteca
de C incluye funciones que ejecutan los pasos requeridos para invocar la
llamada del sistema. Esto hace que realizar una llamada del sistema sea muy
similar a invocar una función de una biblioteca cualquiera.
En la mayoría de los casos, la función del contenedores de la
biblioteca de C, no hacen nada más que:
- •
- copiar argumentos y el número de la llamadas del
sistema al lugar donde el núcleo espero encontrarlos.
- •
- quedarse en modo núcleo, en cuyo caso éste
hará la función real de la llamada del sistema.
- •
- definir errno si la llamada del sistema emite un
error al devolver el núcleo la CPU al modo usuario.
En algunos casos, el contenedor de una función puede hacer algo
más que eso. Por ejemplo ejecutar algún preprocesamiento de los
argumentos antes de ponerse en modo núcleo o postprocesamiento de los
valores devueltos por la llamada del sistema. En estos casos, las
páginas de manual de la sección 2 intentan entrar en los
pormenores tanto de la API de la librería C (en general la de GNU) como
de la llamada del sistema. En general, la DESCRIPCIÓN principal se
centra en la interfaz de la librería de C mientrasla sección
NOTAS explica las diferencias con la llamada del sistema.
Puede encontrar una lista de las llamadas del sistema de Linux en:
syscalls(2).
Cuando surje un error, la mayoría de llamadas del sistema devuelven un
valor negativo de una de las constantes descritas en
errno(3). El
contenedor de la función oculta este detalle: cuando una llamada del
sistema devuelve un valor negativo, se copia su valor absoluto en la variable
errno y se devuelve -1 como valor de retorno del contenedor.
El valor de retorno de una llamada realizada con éxito dependerá
de la propia llamada. La mayoría devuelven el valor cero, aunque otras
puede devolver otro valor distinto aunque finalice con éxito. Los
detalles particulares de cada llamada se describen en sus respectivas
páginas de manual.
En algunos casos, el desarrollador deberá definir una macro de prueba
para obtener la declaración de una llamada del sistema en el archivo de
encabezado definido en la sección SINOPSIS de la página de
manual. A veces se requiere que estas macros para probar
características esté definidas antes de incluir
ningún archivo de encabezado. En estos casos, la macro necesaria
se describe en la página de manual. Consulte
feature_test_macros(7) para más información acerca de las
macros para probar características.
Algunos términos y abreviaturas se emplean para señalar variantes
de UNIX y estándares que siguen las llamadas de esta sección.
Consulte
standards(7).
En la mayoría de los casos no es necesario invocar una llamada al sistema
directamente, pero hay veces en que la biblioteca C estándar carece de
un contenedor con la función adecuada. En este caso, el desarrollador
tendrá que invocar la llamada del sistema mediante
syscal(2).
Antiguamente también podía hacerse mediante macros _syscall
explicadas en
_syscall(2).
En el encabezado del código fuente de cada página de manual se
encuentran los datos del autor de la misma y de los derechos de autor. Tenga
en cuenta que esa información puede ser distinta entre cada
página.
_syscall(2),
syscall(2),
syscalls(2),
errno(3),
intro(3),
capabilities(7),
credentials(7),
feature_test_macros(7),
mq_overview(7),
path_resolution(7),
pipe(7),
pty(7),
sem_overview(7),
shm_overview(7),
signal(7),
socket(7),
standards(7),
symlink(7),
system_data_types(7),
sysvipc(7),
time(7)
La traducción al español de esta página del manual fue
creada por Urko Lusa <
[email protected]>, Juan Piernas
<
[email protected]> y Marcos Fouces <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]