use warnings;
use strict;
####
if( $nomer_vosproizvodyshchego_protsessu=fork ){
####
my $pid = fork();
die "Fork failed\n" unless defined $pid;
if ($pid == 0) {
$| = 1;
exec @args;
}
####
# Same thing? -- I.e. not working?
$|=1;
$FIFO->autoflush( 1 );
####
print $FIFO 'pause';
####
for( $i=0; $i<=$#svitok_na_vosproizvedenie; $i++ ){
system( '/usr/bin/mplayer -slave -input file='.$svitok_truby.' '.$svitok_na_vosproizvedenie_kom[$i] );
}
####
unlink $svitok_truby;
####
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw( mkfifo );
use IO::Handle;
my $svitok_truby = 'tmp.pp';
mkfifo( $svitok_truby, 0700 ) || die "Pipe fail; $svitok_truby : $!";
local $SIG{CHLD} = "IGNORE";
my @args = ('/usr/bin/mplayer', '-slave', '-input', "file=$svitok_truby", '/tmp/1.flac');
my $pid = fork();
die "Fork failed\n" unless defined $pid;
if ($pid == 0) {
exec @args;
}
open (my $FIFO, '>', $svitok_truby) || die "can't open $svitok_truby: $!";
$FIFO->autoflush(1);
for my $i (1 .. 10) {
print $FIFO 'pause';
sleep 1;
}
print $FIFO 'quit';
close($FIFO);
END {
unlink $svitok_truby;
}