fopen dos procesos

¿Está bien tener dos procesos que escriben en el mismo archivo varias veces en un período de tiempo determinado? Esperan los datos y repiten la operación de abrir, escribir, cerrar.

¿Existe la posibilidad de que no se escriban los datos?

Si sus dos procesos están accediendo al mismo archivo, debe usar un Mutex para evitar que ambos procesos escriban en el archivo al mismo tiempo.

El enlace de arriba es para plataformas Windows. Para otras plataformas, necesitará la construcción apropiada de la plataforma, como un mutex pthreads creado con PTHREAD_PROCESS_SHARED .

La función fopen() abre el archivo sin protecciones para compartir ( SH_DENYNO ), al menos en Win32 / VC ++, por lo que sin algún tipo de protocolo de locking posiblemente corromperás el archivo.

Si su aplicación es Win32, puede utilizar la API CreateFile para especificar los modos de uso compartido. La función _fsopen() es algo más portátil, pero no tan portátil como fopen() .

Si no está en Windows, la manera más fácil entre los procesos de cooperación es usar flock . (Use fdopen para obtener un ARCHIVO de un fd.)