Subrutinas, programas de ejemplo y bibliotecas
Este tema proporciona información sobre qué son las subrutinas, cómo utilizarlas y dónde se almacenan.
Las subrutinas se almacenan en bibliotecas para conservar el espacio de almacenamiento y hacer que el proceso de enlace de programa sea más eficiente. Una biblioteca es un archivo de datos que contiene copias de una serie de archivos individuales e información de control que permite acceder a ellos de forma individual. Las bibliotecas se encuentran en los directorios /usr/ccs/lib y /usr/lib . Por convenio, la mayoría de ellos tienen nombres con el formato libnombre.a donde nombre identifica la biblioteca específica.
Todas las sentencias de inclusión deben estar cerca del principio del primer archivo que se está compilando, normalmente en la sección de declaraciones antes de main (), y deben producirse antes de utilizar cualquier función de biblioteca. Por ejemplo, utilice la sentencia siguiente para incluir el archivo stdio.h :
#include <stdio.h>No es necesario hacer nada especial para utilizar subrutinas de la biblioteca C estándar (libc.a). El mandato cc busca automáticamente en esta biblioteca las subrutinas que necesita un programa. Sin embargo, si utiliza subrutinas de otra biblioteca, debe indicar al compilador que busque en esa biblioteca. Si el programa utiliza subrutinas de la biblioteca libnombre.a, compile el programa con el distintivo -lnombre (L en minúsculas). El ejemplo siguiente compila el programamyprog.c, que utiliza subrutinas de la biblioteca libdbm.a :
cc myprog.c -ldbmPuede especificar más de un distintivo -l (L en minúsculas). Cada distintivo se procesa en el orden especificado.
Si está utilizando una subrutina que se almacena en Berkeley Compatibility Library, enlace a la biblioteca libbsd.a antes de enlazar con la biblioteca libc.a , tal como se muestra en el ejemplo siguiente:
cc myprog.c -lbsdCuando se produce un error, muchas subrutinas devuelven un valor de -1 y establecen una variable externa llamada errno para identificar el error. El archivo sys/errno.h declara la variable errno y define una constante para cada una de las posibles condiciones de error.
En esta documentación, todas las llamadas del sistema se describen como subrutinas y se resuelven desde la biblioteca libc.a . La interfaz de programación a las llamadas del sistema es idéntica a la de las subrutinas. En lo que se refiere a un programa de lenguaje C, una llamada al sistema es simplemente una llamada de subrutina. La diferencia real entre una llamada al sistema y una subrutina es el tipo de operación que realiza. Cuando un programa invoca una llamada al sistema, se produce un cambio de dominio de protección para que la rutina llamada tenga acceso a la información privilegiada del kernel del sistema operativo. A continuación, la rutina opera en modalidad de kernel para realizar una tarea en nombre del programa. De este modo, el acceso a la información del sistema privilegiado se restringe a un conjunto predefinido de rutinas cuyas acciones se pueden controlar.
- La lista siguiente representa las rutinas wString que están obsoletas para libc.ade 64 bits. Se incluyen sus equivalentes correspondientes de libc.a de 64 bits. Las rutinas para libc.a de 32 bits se pueden encontrar en la subrutina wstring .
32 Bit only 64 Bit Equivalent wstrcat wcscat wstrchr wcschr wstrcmp wcscoll wstrcpy wcscpy wstrcspn wcscspn wstrdup Not available and has no equivalents in the 64 bit libc.a wstrlen wcslen wstrncat wcsncat wstrncpy wcsncpy wstrpbrk wcspbrk wstrrchr wcsrchr wstrspn wcsspn wstrtok wcstok - Todos los programas que manejan caracteres de varios bytes, caracteres anchos o información específica del entorno local deben llamar a la subrutina setlocale al principio del programa.
- La programación en un entorno multihebra requiere subrutinas reentrantes para garantizar la integridad de los datos.