post

Llamada al sistema

llamada selective focus photography of black rotary phone
Photo by Pixabay on Pexels.com

Las llamada al sistema son interfaces entre el software de usuario y el kernel del sistema operativo. En el contexto de la programación en el shell, estas llamadas proporcionan acceso a funciones de bajo nivel que permiten la manipulación de procesos, archivos y otros recursos del sistema.

Creación y Gestión de Procesos:

fork(): Crear un Proceso Hijo

La llamada fork() crea un nuevo proceso llamado proceso hijo. Este proceso hijo es una copia exacta del proceso padre, pero tiene su propio espacio de memoria. La bifurcación se utiliza comúnmente en la programación de shell para ejecutar procesos en segundo plano.

pid_t child_pid = fork();

exec(): Reemplazar la Imagen del Proceso

Después de crear un proceso hijo, la llamada exec() se utiliza para reemplazar su imagen con otro programa. Existen variantes como execvp, que busca el programa en el directorio PATH.

execvp("ls", args);

wait() y waitpid(): Esperar a que un Proceso Termine

Estas llamadas permiten que un proceso padre espere a que su proceso hijo complete su ejecución. waitpid() proporciona más control al permitir esperar a un proceso específico.

int status;
wait(&status);

Manipulación de Archivos:

open() y close(): Abrir y Cerrar Archivos

open() se usa para abrir un archivo, mientras que close() cierra un descriptor de archivo abierto.

int fd = open("archivo.txt", O_RDONLY);
close(fd);

read() y write(): Lectura y Escritura de Archivos

Estas llamadas permiten la lectura y escritura de datos desde/hacia un archivo.

char buffer[1024];
read(fd, buffer, sizeof(buffer));
write(fd, "Datos a escribir", strlen("Datos a escribir"));

Gestión de Procesos

kill(): Enviar Señales a Procesos

La llamada kill() se utiliza para enviar señales a procesos. La señal SIGTERM (15) generalmente se utiliza para solicitar que un proceso termine.

kill(PID, SIGTERM);

ps() y top(): Obtener Información de Procesos

Aunque no son llamadas al sistema directas, los comandos ps y top proporcionan información sobre los procesos en ejecución.

ps aux
top

Comunicación entre Procesos

pipe(): Crear una Tubería

La llamada pipe() se usa para crear una tubería, permitiendo la comunicación entre dos procesos.

int my_pipe[2];
pipe(my_pipe);

shmget(), shmat(), y shmdt(): Memoria Compartida

Estas llamadas se utilizan para la gestión de memoria compartida entre procesos.

int shmid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0666);

Otros

chdir(): Cambiar Directorio de Trabajo

La llamada chdir() se usa para cambiar el directorio de trabajo del proceso.

chdir("/ruta/nuevo/directorio");

umask(): Establecer la Máscara de Modo

La máscara de modo se configura con umask(), afectando los permisos de los archivos creados por el proceso.

umask(027);

time() y date(): Obtener Información Temporal

Estas llamadas proporcionan información sobre la hora y la fecha actual.

time
date

Estos ejemplos ilustran algunas de las muchas llamadas al sistema que forman la base de la programación en el shell. Cada llamada ofrece funcionalidades esenciales que permiten a los programas de shell interactuar de manera efectiva con el sistema operativo y sus recursos.

Leave a Reply

Your email address will not be published. Required fields are marked *