in reply to Disc burning

Fork seems OK. You can waitpid for the process at the end of the script to check the status.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^2: Disc burning
by milanpwc (Novice) on Jun 05, 2019 at 09:30 UTC
    I want the forked process to return the status or some other messages during burning. How do I make this possible?
      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'