LINUX.ORG.RU

pipe perl


0

0

ребят помогите , не пойму что я делаю не так. что тут может быть не правильно ? надеюсь на вашу помощь.

sub play_123{ my ($filename) = @_; pipe (READ,WRT); WRT->autoflush(1); $sub_play_proc=fork; if ($sub_play_proc==0){ close WRT; open \*STDIN, '<&='.fileno READ; exec("mpg123 $filename"); close READ; }else{ close READ; } }

sub quit{ print WRT "QUIT\n"; }

дело в том что после вызовы quit функции mpg123 как играл так и играет дальше. в чём может быть проблема?

★★

ребят помогите , не пойму что я делаю не так. что тут может быть не правильно ? надеюсь на вашу помощь.

sub play_123{
my ($filename) = @_;
pipe (READ,WRT);
WRT->autoflush(1);
$sub_play_proc=fork;
if ($sub_play_proc==0){
close WRT;
open \*STDIN, '<&='.fileno READ;
exec("mpg123 $filename");
close READ;
}else{
close READ;
}
}

sub quit{ print WRT "QUIT\n"; }

дело в том что после вызовы quit функции mpg123 как играл так и играет дальше. в чём может быть проблема?

блин сорри про форматирование забыл

djung ★★
() автор топика
Ответ на: комментарий от djung

кажись дело в том, что exec меняет парент, не меняя чайлд, оставляя у парента тот-же пид. Но парента уже нет...

vilfred ☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.