add doxygen docs

This commit is contained in:
2021-07-26 02:47:25 -04:00
parent 9ab95c799e
commit 6aca7ae42e
23 changed files with 2728 additions and 9 deletions

View File

@@ -0,0 +1,6 @@
\newpage
\subsection{Builtins}
Los builtins son comandos que son parte del shell, por lo tanto el sistema operativo no los proporciona. Un ejemplo es el comando\
''exit''. Este comando no existe en el sistema operativo, por lo tanto el shell debe actuar cuando el usuario lo escribe en vez\
de lanzar un proceso nuevo.
\lstinputlisting{code/builtins.txt}

View File

@@ -0,0 +1,6 @@
\subsection{Ciclo principal}
El ciclo principal controla todo la funcionamiento del shell. El ciclo debe correr infinitamente hasta que recibe un señal o un\
comando de salir(exit). La primera cosa que tiene que hacer en el ciclo es mostrar un mensaje de entrada y esperar que el\
usuario ingresa un comando. Luego separar la entrada en varios argumentos. Finalmente interpretar los argumentos y decidir que\
hacer con ellos.
\lstinputlisting{code/loop.txt}

View File

@@ -0,0 +1,8 @@
\newpage
\subsection{Entorno}
El entorno está controlado por un struct de array de strings de llaves y valores. Se inserta y busca adentro de estos array de llaves\
para encontrar y usar el variable de entorno. En el shell el struct es usado como un variable global para que se puede accederlo\
desde cualquier parte del código que se necesita los variables de entorno. Lo mas importante son 2 funciones, set\_array\_list y\
get\_array\_list. Se usa set\_array\_list para insertar o sobre escribir un variable de entorno. Y el get\_array\_list retorno un\
valor si se encuentre en el array list basado en la llava pasado a la función como parámetro.
\lstinputlisting{code/environ.txt}

View File

@@ -0,0 +1,6 @@
\newpage
\subsection{Permutar}
Permutar es la parte responsable por correr un programa que está en el sistema operativo o en PATH. Para hacer eso\
primer hacemos un fork donde el hijo permuta la operación y el padre espera que su hijo termina. Luego pasamos un nombre\
de programa a permutar y sus argumentos al execvp.
\lstinputlisting{code/launch.txt}

View File

@@ -0,0 +1,12 @@
\newpage
\subsection{Redireccionamiento}
Para redireccionar las entradas y salidas se usa 4 comandos principales, dup, dup2, open y close. El primer paso a tomar\
es duplicar la entrada o salida(stdin, stdout o stderr) con dup. Eso es importante para restaurarlo después. Luego se abre el archivo\
de salida o entrada usando open y los flags correspondiente a la operación que quiere\
hacer(O\_RDONLY, O\_WRONLY, O\_CREATE, O\_APPEND o O\_TRUNC). Después, cerra stdin, stdout o stderr. Eso va a dejar su fd disponible para\
usar. Finalmente hacer una duplicación con dup del fd de archivo de entrad o salida. Eso va a dejar el archivo usando el fd que
cerramos anteriormente. Ahora todos las cosas mandados al stdin, stdout o stderr van a ser redirigidas al archivo. Para terminar\
cerramos el archivo usado. Luego usamos dup2 para duplicar la copia original en su fd original. I finalmente cerramos la copia.\
Para que funciona eso, debe abrir el redireccionamiento antes de llamar los builtins o permutar y cerrarlo después que termina\
correr los builtins o el proceso hijo.
\lstinputlisting{code/redirection.txt}