INTRO(2) Manual del Programador de Linux INTRO(2)

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.

Ciertos términos y abreviaturas se usan para indicar variantes y estándares de Unix a los que las llamadas de esta sección se adhieren. 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), system_data_types(7), symlink(7), sysvipc(7), time(7)

Esta página es parte de la versión 5.11 del proyecto Linux man-pages. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en https://www.kernel.org/doc/man-pages/.

La traducción al español de esta página del manual fue creada por Urko Lusa <ulusa@lacueva.ddns.org>, Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>

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 debian-l10n-spanish@lists.debian.org>..

1 Noviembre 2020 Linux