add introduction and first code example

This commit is contained in:
Chris Cromer 2021-06-27 14:34:03 -04:00
parent 61b363279f
commit 3eb6bae306
5 changed files with 45 additions and 1 deletions

View File

@ -12,6 +12,7 @@
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,a4paper]{geometry}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{xcolor}
\lstdefinestyle{freefempp}{
language=C,
@ -79,6 +80,8 @@ Carlos Faúndez
\include{sections/introduccion}
\include{sections/codigo}
\include{sections/conclusiones}
\end{document}

View File

@ -0,0 +1,31 @@
void loop() {
while (1) {
print_input_line();
char *line = get_console_input();
StringArray args;
create_string_array(&args);
char *saveptr = NULL;
char *token = strtok_r(line, " ", &saveptr);
while (token) {
insert_string_array(&args, token);
token = strtok_r(NULL, " ", &saveptr);
}
if (line != NULL) {
free(line);
line = NULL;
}
if (args.size == 0) {
continue;
}
if (is_builtin(args.array[0])) {
run_builtin(&args);
}
free_string_array(&args);
}
}

2
doc/sections/codigo.tex Normal file
View File

@ -0,0 +1,2 @@
\section{Código}
\input{sections/codigo/ciclo}

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

@ -1 +1,3 @@
\section{Introducción}
\section{Introducción}
El propósito del proyecto semestral es crear un shell básico para aprender los básicos de que hace un shell en un sistema\
operativo. Hay varios partes que son importante como la creación de procesos, redireccionamiento y el entorno.