Quiero probar automáticamente si una pieza de software reacciona como se esperaba si un archivo esencial de SQLite DB no se puede leer (causando un error de E / S). Exactamente eso sucedió hace unos días en un cliente. Lo arreglamos manualmente, pero ahora quiero crear un código automático para arreglarlo y necesito acceso a un archivo roto para probarlo.
Como todo en Unix es un archivo, sospeché que podría haber un archivo especial que siempre causa errores de E / S cuando uno intenta leerlo (por ejemplo, en / dev).
Algunos archivos similares (imo) serían:
/dev/full
que siempre dice "No queda espacio en el dispositivo" si intentas escribirlo/dev/null
y/dev/zero
así que supuse que solo tenía que haber un archivo como ese (pero aún no he encontrado uno).
¿Alguien conoce ese archivo o cualquier otro método para obtener el resultado deseado (una imagen de partición intencionalmente defectuosa, un contenedor alrededor de open () usando LD_PRELOAD, ...)?
¿Cuál es la mejor manera de ir aquí?