environ #15
20
doc/code/launch.txt
Normal file
20
doc/code/launch.txt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
void launch_program(StringArray *args) {
|
||||||
|
pid_t child = 0;
|
||||||
|
|
||||||
|
child = fork();
|
||||||
|
|
||||||
|
if (child == 0) {
|
||||||
|
if (execvp(args->array[0], args->array) == -1) {
|
||||||
|
fprintf(stderr, "%s: command not found\n", args->array[0]);
|
||||||
|
free_string_array(args);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (child < 0) {
|
||||||
|
perror("fork");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int child_status;
|
||||||
|
waitpid(child, &child_status, 0);
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
\section{Código}
|
\section{Código}
|
||||||
\input{sections/codigo/ciclo}
|
\input{sections/codigo/ciclo}
|
||||||
\input{sections/codigo/builtins}
|
\input{sections/codigo/builtins}
|
||||||
|
\input{sections/codigo/launch}
|
@ -1,3 +1,4 @@
|
|||||||
|
\newpage
|
||||||
\subsection{Builtins}
|
\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\
|
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\
|
''exit''. Este comando no existe en el sistema operativo, por lo tanto el shell debe actuar cuando el usuario lo escribe en vez\
|
||||||
|
6
doc/sections/codigo/launch.tex
Normal file
6
doc/sections/codigo/launch.tex
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
\newpage
|
||||||
|
\subsection{Launch}
|
||||||
|
Launch(lanzar) es la parte responsable por permutar 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 lanzar y sus argumentos al execvp para permutar en el hijo.
|
||||||
|
\lstinputlisting{code/launch.txt}
|
Loading…
Reference in New Issue
Block a user