Skip to content

V1ctor2911/Practica2-SSOO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyShell - Mini Shell de Sistemas Operativos

Este proyecto consiste en el desarrollo de una Mini Shell (msh) funcional desarrollada en lenguaje C para la asignatura de Sistemas Operativos. La shell es capaz de ejecutar comandos internos y externos, gestionar tuberías (pipes), redirecciones de entrada/salida y control de trabajos (jobs) en segundo plano.

Autores

  • Adam El Kassmi Serroukh
  • Víctor Omar Llantoy Núñez del Arco

Características principales

1. Ejecución de Comandos Externos

La shell permite la ejecución de cualquier comando disponible en el sistema (como ls, grep, cat, etc.) mediante el uso de fork y execvp.

2. Comandos Internos (Built-ins)

Se han implementado los siguientes comandos directamente en el código de la shell:

  • cd: Cambia el directorio de trabajo actual. Soporta ir al HOME si no se pasan argumentos.
  • exit: Finaliza la shell de forma segura, cerrando los procesos en segundo plano.
  • umask: Permite consultar o modificar la máscara de creación de archivos del usuario (en formato octal).
  • jobs: Lista todos los trabajos que se están ejecutando en segundo plano o que han sido detenidos.
  • bg: Reanuda la ejecución de un trabajo detenido en segundo plano enviando la señal SIGCONT.

3. Redirecciones y Pipes

  • Pipes (|): Soporta el encadenamiento de múltiples comandos mediante tuberías.
  • Redirección de entrada (<): Lee la entrada desde un archivo.
  • Redirección de salida (>): Escribe la salida estándar en un archivo.
  • Redirección de error (>&): Redirige la salida de errores a un archivo.

4. Gestión de Procesos (Background y Señales)

  • Los comandos pueden ejecutarse en segundo plano añadiendo un & al final.
  • La shell ignora de forma predeterminada las señales SIGINT (Ctrl+C) y SIGTSTP (Ctrl+Z) para evitar cerrarse accidentalmente, permitiendo que estas afecten solo a los procesos hijos en primer plano.

Estructura del Proyecto

  • myshell.c: Código fuente principal que contiene el bucle de la shell y la lógica de ejecución.
  • parser.h: Cabecera que define las estructuras tline y tcommand para el procesamiento de comandos.
  • libparser.a: Librería estática encargada del análisis léxico (tokenización) de la línea de comandos.
  • compila.sh: Script de Bash para compilar el proyecto de forma estática.

Compilación e Instalación

Para compilar la shell, simplemente ejecuta el script de compilación incluido:

chmod +x compila.sh
./compila.sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors