Pregunta

Estoy tratando de escribir un programa que permite a un binario que se ejecute, la sustitución de un determinado archivo cuando se le solicite con otro. Es una biblioteca con reemplazos simples para las funciones de llamada del sistema, que se utiliza con LD_PRELOAD. El problema es que las capturas se abre para lectura (el archivo sustituto se lee en su lugar), pero escribe siempre volver al archivo real, especificado. ¿Hay otras llamadas del sistema "abierto" que debo saber sobre?

¿Fue útil?

Solución

No importa -. Estúpido error

No estaba comprobando caminos tanto absolutas como relativas ...

Otros consejos

No estoy seguro de cuál es la causa de su problema, pero utilizando strace en su programa podría dar una idea. Debe ser parte de cualquier distribución de Linux cuerdo.

Si está abierto para escritura, es más probable que va a través de la función creat (supongo que se podría fopen redirigiendo allí). Compruebe su fcntl.h para una lista completa.

  

sustitución de un determinado archivo cuando se le solicite con otro

Parece que usted comprueba sólo para el archivo de entrada (Cómo se comprueba por nombre de archivo?). Es necesario comprobar y sustituto el archivo de salida, también.

Si va a la salida de una de las salidas estándar, entonces usted necesita para cerrar y volver a abrir con su sustituto salida) antes de la horquilla en el ejecutable.

Para encontrar todas las llamadas al sistema que hace que su ejecutable puede usar strace .
Para buscar todas las llamadas a las bibliotecas que su ejecutable hace que usted puede utilizar ltrace .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top