Pasos de shell
Shell:
Intérprete de comando que se convierte en operaciones y luego en syscalls. Capa de abstracción a nivel usuario.
Terminal vs shell:
La terminal es lo negro que se abre cuando abrimos la app terminal, emula lo que antes era una terminal física. Shell interpreta los comandos sobre esa terminal. Podemos tener +1 shell.
Para ejecutar comandos por detrás no hacer wait, pero hay que monitorearlo → flags a waitpid
Dup→ duplica un fd. Evita hacer lo del ej 2 de execvp. Vamos a usar dup2. Puedo reemplazar std* por un archivo mio o un fd (un pipe por ejemplo).
stdout ahora apunta a hola.txt xq open busca de menor a mayor qué fd asignar. Flush es escribrir. Este codigo es inseguro pq close y open son dos operaciones no atomicas.
Dup toma el fd primero libre
Podemos especificar a qué fd queremos que apunte