Skip to content

Es una CLI que posee tres comandos básicos cd, exit y help, y que además puede ejecutar comandos simples del sistema con redirección y en pipelines pares.

Notifications You must be signed in to change notification settings

Hakush/myBash_so22

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Requires:

Glib and libcheck

Lab01-SisOp-2022

Grupo N° 15

Integrantes:

Otero Alan Sharry Facundo Collo Gaston Rodriguez Diego

Indice

  1. Introducción
  2. Técnicas de Programación
  3. Herramientas de Programación
  4. Setup
  5. Módulos
  6. FeedBack
  7. Conclusiones
  • Introducción

    MyBASH

    Es una CLI que posee tres comandos básicos cd, exit y help, y que además puede ejecutar comandos simples del sistema con redirección y en pipelines pares.

  • Técnicas de Programación

    Se trato de llegar siempre a un código modular y limpio, que cumpla con los requerimientos, pero manteniendo un balance con la legibilidad.

  • Herramientas de Programación

    Durante todo el desarrollo del laboratorio usamos el IDE CLion con la extensión CodeWithMe para conectarnos al mismo workspace. GDB fue clave para el avance.

Setup

Limpiar ejecutables

make clean

Compilar

make 

o también

make all 

Ejecutable

./mybash

Ejecutar desde un solo comando

make && ./mybash

Modulos

  • Command

    Contiene los TADs responsables de construir y dar funcionalidad a nuestras pipelines y comandos simples, abstrayendo su comportamiento.
  • Builtin

    Contiene métodos para manejar los comandos internos; específicamente ejecutarlos, enumerar y encapsular las syscalls de los builtin implementados, y chequear si un scommand es un comando interno. Ademas implementamos function pointers para lograr cierto "Polimorfismo" y que sea mas sencillo llamar al executor de nuevos comandos internos.
  • Execute

    Es el encargado de ejecutar los comandos de una pipeline, conectando sus inputs y outputs y ademas realizarlos en procesos hijos.
  • Parsing

    Es el encargado de iterar entre los argumentos, símbolos y demás patrones que nos interesen que se encuentren en un string y construir nuestros TAD pipeline y scommand.

Feedback

Desarrollo

Nuestro proceso de desarrollo fue el siguiente:

Comenzamos desarrollando la estructura del command. En principio nos fuimos guíando por el díagrama que dejó la cátedra en el doc, y luego nos ayudamos de las específicaciones que estaban en cada .h (command.h). Al comenzar con la estructura de command y pipeline, nos decidimos usar Glist de la librería Glib, porque tenía métodos ya implementados que ibamos a necesitar en cada función propia(como hacer push o pop). Lo próximo que realizamos fue el parsing y el builtin, en paralelo. El builtin lo hemos ido cambiando, ya que aparecían mejores formas de desarrollo(mas elegante y modularizada) y a medida que pasaban los días, mejorabamos el código o eliminabamos cosas innecesarias, también arreglabamos problemas como "segmentation fault" que generaban los ciclos o los punteros. El último día testeamos que la llamada a los comandos internos, funcionaban, el cd, exit y help. Al final de todo y lo que mas problema generó fue el execute.c, en especial lo que implica el fork y pipe, por sus test, pero que lograron resolverse el último día. Pudimos resolver todo lo que implican los puntos necesarios para aprobar el proyecto, desde los comandos internos a los procesos zombies, y también realizar un punto estrella: generar un prompt con información relevante.

Conclusiones

Sentimos que el lab fue entretenido y pudimos adquirir los conocimientos de una manera desafiante pero satisfactoria, si bien no llegamos a cumplir todos los puntos extra, de haber tenido mas tiempo (Hablando del tiempo personal de cada uno de los integrantes), consideramos que habria sido totalmente alcanzable.

About

Es una CLI que posee tres comandos básicos cd, exit y help, y que además puede ejecutar comandos simples del sistema con redirección y en pipelines pares.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published