fork() + ficheros

aydil
06 de Septiembre del 2004
He leido que cuando se crea un hijo el hijo recibe una copia exacta del codigo del padre y si el padre esta trabajando con un fichero el hijo lo recibe abierto y tanto padre como hijo pueden escribir sobre el aunque el padre despues de crear el hijo lo cierre. No hay problemas de sincronización? Si un tercer proceso hijo2 del primer padre quisiera acceder sobre dicho fichero en modo lectura, habría problemas? Y si un hijo crea un nuevo fichero el padre podría acceder a él,después que ese hijo finalizara o durante? No me entero muy bien de este tema, tengo q trabajar con procesos y ficheros en linnux, si alguien me pudiera decir un sitio donde explicaran un poquito esto... he estado buscando pero no encuentro toda la información que necesito, gracias! :)
un saludo

chuidiang
06 de Septiembre del 2004
Cuando haces fork() efectivamente, tanto el padre como el hijo comparten el fichero y lo ven abierto simultaneamente y pueden leer y escribir de el a la vez.
Efectivamente, puede haber problemas de sincronizacion. Si ambos escriben a la vez, uno puede machacar lo que esta escribiendo el otro. El efecto es similar a lo que verias en pantalla si ambos procesos se ponen a usar la funcion printf(), es decir, todo mezclado.

Aqui tienes algo sobre procesos e hilos http://www.geocities.com/chuidiang/procesos/procesoshilos.html

Para evitar problemas de sincronizacion, tienes los semaforos http://www.geocities.com/chuidiang/semaforos/semaforo.html

Se bueno.

aydil
06 de Septiembre del 2004
gracias :)

aydil
06 de Septiembre del 2004
gracias :)