add loop and builtins
This commit is contained in:
parent
3eb6bae306
commit
eefb71ccd5
@ -9,7 +9,7 @@
|
|||||||
\usepackage{array}
|
\usepackage{array}
|
||||||
\usepackage{adjustbox}
|
\usepackage{adjustbox}
|
||||||
\usepackage{titling}
|
\usepackage{titling}
|
||||||
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,a4paper]{geometry}
|
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,letterpaper]{geometry}
|
||||||
\usepackage{amsmath}
|
\usepackage{amsmath}
|
||||||
\usepackage{listings}
|
\usepackage{listings}
|
||||||
\usepackage{xcolor}
|
\usepackage{xcolor}
|
||||||
|
9
doc/code/builtins.txt
Normal file
9
doc/code/builtins.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
void run_builtin(StringArray *args) {
|
||||||
|
if (strcmp(args->array[0], "exit") == 0) {
|
||||||
|
exit_shell(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void exit_shell(StringArray *args) {
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
@ -13,10 +13,6 @@ void loop() {
|
|||||||
insert_string_array(&args, token);
|
insert_string_array(&args, token);
|
||||||
token = strtok_r(NULL, " ", &saveptr);
|
token = strtok_r(NULL, " ", &saveptr);
|
||||||
}
|
}
|
||||||
if (line != NULL) {
|
|
||||||
free(line);
|
|
||||||
line = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.size == 0) {
|
if (args.size == 0) {
|
||||||
continue;
|
continue;
|
||||||
@ -25,7 +21,5 @@ void loop() {
|
|||||||
if (is_builtin(args.array[0])) {
|
if (is_builtin(args.array[0])) {
|
||||||
run_builtin(&args);
|
run_builtin(&args);
|
||||||
}
|
}
|
||||||
|
|
||||||
free_string_array(&args);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
\section{Código}
|
\section{Código}
|
||||||
\input{sections/codigo/ciclo}
|
\input{sections/codigo/ciclo}
|
||||||
|
\input{sections/codigo/builtins}
|
5
doc/sections/codigo/builtins.tex
Normal file
5
doc/sections/codigo/builtins.tex
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
\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}
|
@ -1 +1,5 @@
|
|||||||
\section{Conclusiones}
|
\section{Conclusiones}
|
||||||
|
Lo cosa mas importante que se puede aprender del proyecto es que el shell es un puente entre el usuario y el sistema operativo.\
|
||||||
|
El shell es responsable para lanzar programas, interpretar comandos y un shells mas avanzados interpretar un lenguaje de\
|
||||||
|
scripting para poder facilitar tareas o automatizarlas. Por lo tanto el shell es una parte integral para el sistema operativo\
|
||||||
|
especialmente en sistemas como GNU/Linux o BSD.
|
Loading…
Reference in New Issue
Block a user