On Feb 12, 2008 12:38 PM, Michael Barnes <[EMAIL PROTECTED]> wrote: snip > I'm the new kid and this is a beginners forum, so I welcome all ideas > and options. Forgiving my ignorance, would you mind giving an example > of how I would do this with lsof? snip
This only works on systems with lsof. Checking file size change is a fairly portable, if inexact, way of checking to see if a file is still being written to. Of course, lsof also has problems: what if the file is opened, written to, and closed, opened, written to, closed, etc. and the lsof runs while the file is closed? #!/usr/bin/perl use warnings; use strict; my $lsof = "/usr/sbin/lsof"; my $file = "/tmp/foo.$$"; my $pid = fork; die "could not fork" unless defined $pid; unless ($pid) { #child writes to the file for 5 seconds open my $fh, ">", $file or die "could not open $file\n"; for my $i (1 .. 5) { print $fh "$i\n"; sleep 1; } exit; } #parent monitors file my $file_holder_pid = qx($lsof -t $file); chomp($file_holder_pid); while ($file_holder_pid) { print "$file is current being held open by $file_holder_pid\n"; sleep 1; $file_holder_pid = qx($lsof -t $file); chomp($file_holder_pid); } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/