Ist Datei noch Offen?

sbreit

unregistriert
Thread Starter
Dabei seit
28.12.2005
Beiträge
164
Reaktionspunkte
1
Mahlzeit!

Ich hatte es gestern noch irgendw gesehen, aber ich finde es jetzt um's Verrecken nicht mehr :(

Ich müßte wissen, ob auf eine Datei noch ein Filehandle offen ist, also ob noch irgend ein Prozeß in die Datei schreibt. Folgendes Problem: Ich habe eine Ordneraktion, die Dateien verarbeiten soll. Die "krallt" sich allerdings schon die Datei, wenn sie angelegt wird (aber logischerweise noch leer ist).

Daher will ich überprüfen (Schleife oder so), ob in die Datei noch geschrieben wird oder nicht. Wie kann ich das machen? :confused:

Gruß
Steffen
 
Code:
--set start to (current date)
repeat while true
	try
		do shell script "lsof -t " & quoted form of (POSIX path of (item i of added_items))
	on error
		exit repeat
	end try
	--if (current date) > start + 30 then -- max 30 sekunden warten
	--	exit repeat
	--end if
end repeat
 
Danke erst mal für die Antwort.

Ich kapiers aber immer noch nicht!? Mein Skript läßt die Datei jetzt in Ruhe, bis nicht mehr in die selbe geschrieben wird... Komisch ist nur, daß das Automator-Skript, was aufgerufen wird, funktioniert, wenn ich einfach eine Datei in den Zielordner kopiere, aber nicht mehr funktioniert, wenn ich eine Datei direkt von einem Programm aus (in meinem Fall der Scanner) dort hinein schreibe, obwohl in beiden Fällen mit der Ausführung erst begonnen wird, wenn die Dateien nicht mehr geschrieben werden :confused: :confused: :confused:

Kann mal jemand bitte einen Blick auf mein Script werfen und mir sagen, wo der Fehler liegt?

Code:
on adding folder items to this_folder after receiving added_items
	repeat with one_item in added_items
		try
			tell application "Finder" to set fileName to (name of item one_item)
		end try
		if fileName contains ".tif" then
			
			set LastFileSize to -1
			set isGrowing to true
			repeat until isGrowing is false
				set CurrentFileSize to do shell script ("/bin/ls -l " & (quoted form of (POSIX path of (one_item))) & " | /usr/bin/awk '{print $5}'")
				if CurrentFileSize is equal to LastFileSize then
					set isGrowing to false
				else
					set LastFileSize to CurrentFileSize
					delay 15
				end if
			end repeat
			delay 5
			tell application "Macintosh HD:Users:sbreit:Library:Workflows:Applications:Folder Actions:Scanordner.app"
				open one_item
			end tell
		end if
	end repeat
end adding folder items to
 
Zurück
Oben Unten