Al leer acerca de las tuberías en Programación avanzada en el entorno UNIX, noté que después de una horquilla el padre puede close()
leer el extremo de una tubería y no cierra el extremo de lectura para el niño. Cuando un proceso se bifurca, ¿se conservan sus descriptores de archivo?Comportamiento de una tubería después de una horquilla()
Lo que quiero decir con esto es que antes del tenedor el descriptor de archivo de lectura de tubería tenía un conteo de retención de 1, y después de la horquilla 2. Cuando el padre cerró su lado de lectura el fd pasó a 1 y se mantiene abierto para el niño. ¿Es esto esencialmente lo que está sucediendo? ¿Este comportamiento también ocurre para los descriptores de archivos regulares?
... a menos que haga algún truco con http://www.opengroup.org/onlinepubs/009695399/functions/pthread_atfork.html (que no debería, eso no es para lo que está ahí) – ephemient
Claro, pero qué has publicado no es un 'fork()' sino una variación de él. – pajton
No, quiero decir que 'pthread_atfork' puede cambiar las acciones del programa en el momento' fork' para (por ejemplo) incluir el cierre de los descriptores de archivos. Pero por defecto eso no sucede, y es extraño abusar de esa interfaz de todos modos. – ephemient