• Publicidad

Cómo saber si un fichero está en uso

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Cómo saber si un fichero está en uso

Notapor ricar » 2010-09-05 10:44 @488

Hola.

¿Se os ocurre alguna forma de conocer qué ficheros están en uso y que ficheros no?
Para Windows.

Muchas gracias.

Un saludo,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Publicidad

Re: Cómo saber si un fichero está en uso

Notapor explorer » 2010-09-05 14:47 @658

Estoy seguro que llamando a la API de Windows, con Win32::API, se puede saber, pero lo que he encontrado es usar una herramienta intermedia, llamada nthandle, pero es muy posible que en la página de Sysinternals encuentres una herramienta mucho más moderna.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo saber si un fichero está en uso

Notapor ricar » 2010-09-05 15:31 @688

Hola explorer.

Probaré, puesto que me da un error al hacer un binmode() del fichero que está en uso y el programa no continua.

Voy a ver si encuentro una solución más ideal y si no utilizaré una aplicación externa, como la que comentas.

Muchas gracias por la respuesta.

Un saludo,
Ricar.

Edito: He resuelto el problema con la instrucción anterior open():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open FICHERO, $fichero or $variable=1
if ($variable == 0) {
binmode() ...
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

De esta forma, binmode() no da error porque no intenta hacer nada sobre los fichero que están en uso.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Cómo saber si un fichero está en uso

Notapor explorer » 2010-09-05 16:06 @713

En otras palabras... que HAY que hacer lo que SIEMPRE hay que hacer cuando intentamos abrir un fichero: comprobar si la instrucción open() ha tenido éxito o no. Y si no lo tiene, sabemos que en $! Perl nos dirá el porqué ha fallado.

Puedes poner el código dentro de una instrucción eval(), y de esa manera el usuario no verá nada extraño en pantalla, y podremos controlar qué hacer en caso de que algo vaya mal (en $@ estará almacenado el texto del error).

Más información perldoc perlopentut.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados