obtener posicion en un file descriptor??

Aldrin Martoq amartoq en dcc.uchile.cl
Mar Feb 3 17:42:54 CLST 2009


On Sat, 2009-01-31 at 21:44 -0300, Daniel Serpell wrote:
> El problema es que no resuelve la pregunta original, ya que el parche de
> biblioteca se debe aplicar *antes* de iniciar el programa.

Yep, segun segui buscando y creo que systemtap puede entregar el $pos de
un fd (y eso cumple mis requerimientos), pero no he tenido tiempo de
probar (ademas que systemtap no viene por default AFAIK).

Otra opcion que vi _sin modificar los programas_ seria armar un modulo
del kernel que ponga un archivo especial en /proc, y uno de el PID y
tire un mapa de los archivos. Ej:

# echo $PID > /proc/fdmaps
#fd #pos
0 -1
1 -1
2 -1
3 545345

Internamente deberia encontrar el task dado un pid, iterar sobre
task->files y llamar al llseek interno (vfs_lseek creo que era)...

> Claro, uno podría mediante GDB inyectar código adicional en tiempo de
> ejecución, pero eso es bastante complejo.

Gracias Daniel, estuvo interesante! Pero no me atreveria a pichicatear
un programa ya corriendo con GDB (ni tu solucion ni inyectar codigo).


La solucion de dd y pv estan buenas y no las conocia (en particular la
ultima), el problema es que tienes que reprogramar tus scripts o las
cosas que estan andando... y hay software que no puedes modificar de
esta forma (ej: una base de datos).


Slds,
-- 
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: This is a digitally signed message part
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20090203/4bda470a/attachment.bin


Más información sobre la lista de distribución Linux