Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estamos tan acostumbrados a que ciertas cosas funcionen que no nos paramos a pensar
como pueden hacerlo. Por ejemplo, con el siguiente código:
p
p
p
p
p p
¦Ê
: cierra un descriptor de fichero
¦Ê : duplica un descriptor de fichero, si tenemos un determinado
descriptor apuntando a, por decir algo, /dev/null mediante dup se crea uno nuevo
apuntando igualmente a /dev/null
WhataheFrak?!?!?!
p
Porque con el
liberamos un descriptor, por lo que sabemos que el
devolverá el descriptor de fichero que se acaba de liberar (0: ), por lo que
podemos cerrar el descriptor que tenemos como pipe1[0] porque a la pipe ya apunta el
nuevo descriptor, el 0, el cual además es el . Podemos comprobarlo con el
siguiente código:
ÿp
ÿp
!
Como que los , y ya están abiertos el nos devolverá
el 3:
"
#
Pero si cerramos primero el antes del (en el ) nos devolverá un 0:
p
"
ÿp
ÿp
p
&''
p
p
p ()*+,-.$()/+(012$().+30*
p p
4p % 0311
!
&''
p
p
p p
4p 0311
!
!
ºónde:
¦Ê El primer hijo, el
, usa como la
y como el
¦Ê El segundo hijo el
, no necesita de , y la usa la
Por lo que efectivamente podemos ver que los resultados son equivalentes:
5ppp
"
pp
p
p
p