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}
|
||||
\input{sections/codigo/ciclo}
|
||||
\input{sections/codigo/builtins}
|
||||
\input{sections/codigo/launch}
|
@ -1,3 +1,4 @@
|
||||
\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\
|
||||
|
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