report #10
@ -12,6 +12,7 @@
|
|||||||
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,a4paper]{geometry}
|
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,a4paper]{geometry}
|
||||||
\usepackage{amsmath}
|
\usepackage{amsmath}
|
||||||
\usepackage{listings}
|
\usepackage{listings}
|
||||||
|
\usepackage{xcolor}
|
||||||
|
|
||||||
\lstdefinestyle{freefempp}{
|
\lstdefinestyle{freefempp}{
|
||||||
language=C,
|
language=C,
|
||||||
@ -79,6 +80,8 @@ Carlos Faúndez
|
|||||||
|
|
||||||
\include{sections/introduccion}
|
\include{sections/introduccion}
|
||||||
|
|
||||||
|
\include{sections/codigo}
|
||||||
|
|
||||||
\include{sections/conclusiones}
|
\include{sections/conclusiones}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -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
2
doc/sections/codigo.tex
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
\section{Código}
|
||||||
|
\input{sections/codigo/ciclo}
|
6
doc/sections/codigo/ciclo.tex
Normal file
6
doc/sections/codigo/ciclo.tex
Normal 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}
|
@ -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.
|
Loading…
Reference in New Issue
Block a user