Estoy tratando de verificar si un determinado programa java.io.File está abierto. En las ventanas que utilizo este sencillo truco:¿Cómo comprobar si un archivo está abierto por otro proceso (Java/Linux)?
try {
FileOutputStream fos = new FileOutputStream(file);
// -> file was closed
} catch(IOException e) {
// -> file still open
}
Sé que los sistemas basados en UNIX permiten abrir archivos en múltiples procesos ... ¿Hay un truco similar para lograr el mismo resultado para los sistemas basados en UNIX?
Cualquier ayuda/hack muy apreciada :-)
tiene toda la razón ... pero necesito esta funcionalidad para controlar el estado del archivo (que hago con WatchServices en Java 7). pero también necesito detectar cuándo se cierra un archivo en particular nuevamente para desbloquearlo, para que otros usuarios puedan editarlo nuevamente. – salocinx
¿Puedes llamar a 'lsof'? – tchrist
Esto es lo siguiente que intentaré hacer. lsof parece existir en distribuciones Linux bastante numerosas. Abrir un nuevo proceso con lsof y leer el resultado estándar hará el trabajo. Presentaré mi solución mañana en este hilo. gracias hasta ahora! – salocinx