You need to handle SIGCHLD signals. When a child process exits, the parent gets a SIGCHLD. There, you call waitpid() to get the exit status of the child.
This is from my own Tk based mp3 player:
}#start a new song $SIG{'CHLD'} = 'sig_child'; if ($pid = fork) { $w::main->configure( -title => "TkMP3 - $fnm" ); $w::title->configure( -text => $fnm ); } elsif (defined $pid) { exec 'kmp3player','-q','-b','256',$fnm; } else { die "Can't fork: $!\n"; } # the child exit handler sub sig_child { $wsts = waitpid($pid,WNOHANG); $sts = $?; if ($wsts == 0) { $SIG{'CHLD'} = 'sig_child'; return; } die "Child exited abnormally, exiting\n" if $sts != 0; # send notification to app to pick next song #....
--- print map { my ($m)=1<<hex($_)&11?' ':''; $m.=substr('AHJPacehklnorstu',hex($_),1) } split //,'2fde0abe76c36c914586c';
In reply to Re: tk player with system/exec
by pfaut
in thread tk player with system/exec
by mce
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |