Usando las llamadas a posix read() write() linux, se garantiza que si escribo a través de un descriptor de archivo y leo otro descriptor de archivo, de manera serial, las dos acciones son mutuamente exclusivo el uno del otro ... ¿que mi descriptor de archivo leído siempre verá lo que fue escrito en último lugar por el descriptor de archivo de escritura?dos descriptores de archivo en el mismo archivo
creo que este es el caso, pero yo quiero estar seguro y la página del manual no es muy útil en esta
¿Qué sucede si utilizo llamadas open() separadas en cada una de ellas individualmente ... ¿estarán los datos de la fd escrita disponibles para la lectura fd? –
Con dos llamadas abiertas separadas, cada fd tendrá su propia posición. Entonces, si ambos están al principio del archivo y usted escribe con uno, el otro seguirá estando al principio del archivo, de modo que una escritura sobrescribirá lo que escribió la primera escritura, a menos que haya abierto el archivo con O_APPEND (en qué caso cada escritura busca implícitamente hasta el final antes de escribir). –
gracias chris. mi pregunta era un poco diferente, pero sí ... si esa segunda persona estaba leyendo, leería exactamente lo que escribió la primera. La respuesta a mi pregunta es que sí, está garantizado que cualquier persona que lea el archivo después de que la escritura haya regresado leerá lo que sea que haya escrito. esto se debe a que Linux bloquea el acceso a las páginas de caché de io en la memoria –