in reply to (tye)Re: Temporary files and cleaning up after an interruption
in thread Temporary files and cleaning up after an interruption

Says tye:

How does a child wait for a parent to exit? (use flock as an IPC mechanism)
That's nice. Thanks for the idea.

Here's an alternative mechanism. I think this might be more commonly used:

#!/usr/bin/perl pipe R, W or die; die unless defined my $pid = fork; if ($pid) { # parent close R; print "parent: I'm going to do some work now\n"; for (1 .. rand 12) { print "Parent is working...\n"; sleep 1; } print "parent: exiting\n"; } else { # child close W; print "child: waiting for parent to exit\n"; <R>; print "child: parent exited; exiting\n"; }
I used this technique extensively in my obfuscated contest entry.

Replies are listed 'Best First'.
Re: Temporary files and cleaning up after an interruption
by Dominus (Parson) on Jan 05, 2001 at 08:45 UTC
    Says tye:

    How does a child wait for a parent to exit? (use flock as an IPC mechanism)

    Another related technique:

    # in the child: while (whatever...) { do_some_work(); if (getppid() == 1) { print "my parent is dead!"; clean_up(); exit; } }

      Yes, both of those work. I didn't use the first one because I already had a shared file handle so no need to create another one. I didn't use the second one because it doesn't allow me to wait; I have to loop sleeping and checking.

      But they are both good techniques to know. Thanks.

              - tye (but my friends call me "Tye")