Ich arbeite an einem Perl-Skript, wo ich den Inhalt von mehreren Remote-Dateien auf Diferents-Servern überprüfen muss. Inside my Schleife habe ich dies:perl - Dateien sicher öffnen
my $file = "\\\\$myserver\\c\$\\$mydirectory\\$myfile";
if (open (FILE, "<", $file))
{
# do some work
close (FILE);
}
Dies funktioniert gut die meisten, wenn die Zeit, aber heute habe ich ein sehr spezifisches Problem hatte. Einer der Server hatte sein Windows-Verzeichnis gelöscht und reagierte nicht. Ich war nicht einmal in der Lage, das Terminal zu töten, auf dem das Skript läuft. Also begann ich online einen Weg zu suchen, eine Auszeit zu hatte, aber nach langer Suche fand ich diese:
Blocking I/O auf mswin32
Alarm (2) nicht unterbricht I blockiert/O auf MSWin32, so 'Timeout' wird das auch nicht tun.
Da fast alle Lösung die Funktion Alarm verwenden, habe ich keine Ahnung, wie ich verhindern kann, dass meine Skriptform wieder festklebt.
PS: Ich habe versucht, Systemaufrufe zu verwenden, um die Datei zu drucken, aber ich habe das gleiche Problem sogar direkt aus einem cmd und nicht innerhalb des Skripts.
Ich bin nicht sicher, dass das Problem tatsächlich hilft. Die Methode, die das OP verwendet, um zu testen, ob es funktioniert hat, ist in Ordnung - es ist nur die Blockierung, die auch nicht funktionieren würde. – Sobrique
Ich stimme Ihnen zu, es ist eine elegantere Möglichkeit, Datei zu öffnen, aber es ist nicht mit meinem Problem verbunden –