SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Leber en Miércoles 21 de Diciembre de 2011, 15:46
-
Buenos dias,
Mi pregunta es si hay alguna manera de saber con la API de linux si cierto fichero esta siendo usado por algun proceso ( si esta abierto digamos ).
La funcion stat no sirve, ya que da todos los datos sobre el fichero pero este no, y tampoco quiero hacer una busqueda en /proc/[pids]/[fd] para saber si ahi se encuentra el fichero, ya que perderia mucho tiempo.
Se os ocurre algo?
Gracias
-
Buenas
con el comando lsof podes listar los procesos que tienen abierto un archivo.
Estube buscando y no encontre una funcion que hago lo mismo, pero con un system lo podes usar.
lsof nombre_proceso
Saludos
-
tampoco quiero hacer una busqueda en /proc/[pids]/[fd] para saber si ahi se encuentra el fichero, ya que perderia mucho tiempo.
Hmm... no creo que hacer lo que comentas tome mucho tiempo, y no me sorprenderia si lsof hace justamente eso (realmente no lo se).
En todo caso puedes ver el codigo de lsof que es libre y no esta sujeto a ninguna licencia. La copia de las fuentes que usa Debian las puedes descargar del siguiente link:
Codigo aqui. (http://ftp.de.debian.org/debian/pool/main/l/lsof/lsof_4.81.dfsg.1.orig.tar.gz)
Ten en cuenta que es multiplataforma.