in reply to Re: Disc burning
in thread Disc burning

I want the forked process to return the status or some other messages during burning. How do I make this possible?

Replies are listed 'Best First'.
Re^3: Disc burning
by shmem (Chancellor) on Jun 05, 2019 at 14:32 UTC
    How do I make this possible?

    Example:

    #!/usr/bin/perl use strict; use warnings; use IO::Select; my ($rh,$wh); pipe($rh,$wh); $wh->autoflush; if ((my $pid = fork) == 0) { # child here close $rh; sleep 2; print $wh "child here\n"; sleep 4; print $wh "child again\n"; close $wh; exit; } else { # parent here close $wh; my $s = IO::Select->new(); $s->add($rh); $SIG{ALRM} = sub { if ($s->can_read(0) and ! eof($rh) ) { my $line = <$rh>; print "child sent: $line"; } alarm 1; }; alarm 1; for(;;) { # body of your parent code print "waiting...\n"; sleep; print "again "; last if eof $rh; } print "child is done\n"; }

    For something more elaborate, check out an event module, e.g. EV and use EV::io with $rh. If you already use some library using an event loop (e.g. Tk), use that.

    perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'