Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

279
Views
Sistema de archivos de solo lectura "Justo a tiempo" usando mkfifo e inotifywait

Estoy escribiendo un middleware bruto; básicamente, tengo un código antiguo que necesita abrir 100,000 archivos solo para lectura, esperando que todos estén en una carpeta. Nunca escribe. Es multiproceso, por lo que puede intentar abrir ~30 archivos al mismo tiempo. A la antigua, tendría que copiar los archivos en esa carpeta (o usar enlaces, NFS, etc.). Vale la pena señalar que no tengo la capacidad de cambiar este código antiguo, es solo un binario.

Tengo un código nuevo y elegante que puede recuperar un archivo casi al instante. Quiero unir estas cosas, de modo que cuando el código anterior intente abrir el archivo, en realidad, en tiempo real, esté ejecutando el nuevo código.

Así que pensé en mkfifo e inotifywait. En lugar de una carpeta de 100 000 archivos, puedo crear una carpeta de 100 000 canalizaciones con nombre. Hasta aquí todo bien. El código heredado va a abrir los archivos, sin saber que en realidad se llaman canalizaciones. El problema es que no sé en qué orden el código heredado abrirá los archivos (bien, ¿verdad?). Así que me gustaría ACTIVAR la ESCRITURA de tubería con nombre (de mi nuevo código elegante) cuando el código heredado entra para la lectura. No puedo generar 100,000 escrituras y hacer que todas se bloqueen. Así que pensé, hey, inotifywait tiene sentido. Cada vez que el legado va a abrir la canalización, desencadena un evento de lectura, que luego se puede usar para generar el escritor de canalización en segundo plano. El problema es que inotifywait no activa el evento de lectura hasta DESPUÉS de que se haya generado el escritor.

¿Alguna idea de cómo resolver esto? Básicamente, quiero interceptar un archivo abierto, bloquearlo durante un par de cientos de ms mientras recupero el contenido del archivo y luego devolver ese contenido. Idealmente, no tengo que crear un sistema de archivos FUSE personalizado para hacer esto ... es solo un archivo abierto de solo lectura. El problema es que esto debe ejecutarse rápido y en paralelo... y no sé qué archivos se abrirán y en qué orden. ¡Tiene que ser una forma rápida y sucia!

Gracias de antemano por el tiempo de todos.

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!