que tienen una aplicación multiproceso que se está abriendo y leyendo el mismo archivo (no escrito). Estoy abriendo un descriptor de archivo diferente para cada hilo (pero todos apuntan al mismo archivo). Cada hilo lee el archivo y puede cerrarlo y abrirlo nuevamente si se alcanza EOF. ¿Esta bien? Si realizo fclose() en un descriptor de archivo ¿afecta a los demás descriptores de archivo que apuntan al mismo archivo?descriptores de archivos múltiples a un mismo archivo, C
Respuesta
Eso está bien. Puede abrir todas las veces que desee el mismo archivo y cada descriptor de archivo será independiente el uno del otro.
Eso debería funcionar bien, siempre que cada hilo tiene su propio identificador de archivo. Ya que mencionas uso de fclose()
, que sugiere que también está usando fopen()
en cada hilo y cada hilo sólo afecta a su propia FILE *
variable.
¿Hay algún problema?
Para los sistemas Linux no necesita múltiples descriptores de fichero para hacer esto. Puede compartir un solo descriptor de archivo y usar pread para realizar atómicamente una operación de búsqueda/lectura sin modificar el descriptor de archivo.
'pread' es POSIX, por lo que no está limitado a Linux. –
- 1. Escribiendo a varios descriptores de archivos
- 2. dos descriptores de archivo en el mismo archivo
- 3. Hilos y descriptores de archivos
- 4. ¿Es posible esperar en ambos canales y descriptores de archivos al mismo tiempo en Go?
- 5. Evitando la reutilización de descriptores de archivos
- 6. ¿Entiendo cómo funcionan los descriptores de archivos Unix en C?
- 7. Múltiples procesos accediendo al mismo archivo
- 8. ¿Crea un nuevo subproceso descriptores de archivos duplicados y descriptores de socket en Linux?
- 9. ¿Cómo funcionan los descriptores de archivos?
- 10. C Input Output # Archivo de texto de múltiples archivos
- 11. ¿Se comparten descriptores de archivos al tenedor() ing?
- 12. Múltiples subprocesos leyendo desde el mismo archivo
- 13. Crear archivo Zip desde múltiples archivos de memoria en C#
- 14. Ayuda con los descriptores de archivos en Unix
- 15. Compila múltiples archivos C con make
- 16. ¿Qué nombre de variable usas para los descriptores de archivos?
- 17. utilizar el mismo archivo estático en múltiples aplicaciones en Django
- 18. Cómo ejecutar múltiples archivos .BAT dentro de un archivo .BAT
- 19. Subprocesos múltiples de Python que acceden al mismo archivo
- 20. Múltiples archivos de esquema XSD a clases C#
- 21. C# Threading - Lectura y hash de múltiples archivos al mismo tiempo, ¿método más fácil?
- 22. Asignar el mismo valor a múltiples variables
- 23. Múltiples archivos App.Config
- 24. Ant: copiar el mismo conjunto de archivos a múltiples lugares - continuó
- 25. sh: ¿Cómo evito los descriptores de archivos numerados?
- 26. Unir múltiples archivos Coffeescript en un archivo? (Varios subdirectorios)
- 27. boost :: iostream zlib comprimiendo múltiples archivos en un solo archivo
- 28. Acceso a los nombres de archivo de un formulario de carga de archivos múltiples
- 29. Bash leer los descriptores de archivos/escritura - buscar al inicio del archivo
- 30. ¿Cómo adjuntar múltiples archivos a un correo electrónico usando JavaMail?
Básicamente, he creado una matriz de 2-dim de punteros de archivos (ya que cada hilo se lee, por ejemplo, archivos X), para un total de hilos y. entonces mi array FILE * es array [y] [x]. Para un hilo dado i, abro un archivo a través de fopen (array [i] [0]) por ejemplo (para el archivo 0). Luego leo (fread) el archivo (aunque no todo de una vez) y hago otras tareas (sin embargo, no se produce la escritura de archivos). Durante una lectura, si se alcanza EOF, cierro y luego vuelvo a disparar. Mi preocupación era que, cuando FO fclose y fopen, podría afectar en modo alguno los otros punteros archivo * de los otros hilos que apuntan al mismo archivo realicé f Cerrar O – Gigi
Asumiendo que su 'fopen()' es un error tipográfico (debe ser 'array [i] [0] = fopen' ...), entonces sí, eso funcionará bien. Siempre que cada hilo no manipule datos pertenecientes a otros hilos. – wallyk
Gracias. Sí, todos los hilos están haciendo para estos archivos fopen(), fread() y fclose(). – Gigi