Article View: pl.comp.lang.perl
Article #52274Re: Zapis do fifo
From: Adam Osuchowski
Date: Sun, 24 Jul 2011 14:01
Date: Sun, 24 Jul 2011 14:01
33 lines
1734 bytes
1734 bytes
piecia aka dracorp wrote: > I aby teraz sterować mplayerem wystarczy pisać do fifo ale z poziomu > skryptu działa np. to: > #v+ > `echo "pause" > $fifo_file`; > #v- > a nie działa to: > #v+ > print $fifo_fh "pause\n"; > #v- > Aczkolwiek przy uruchomionym skrypcie testowałem printa bezpośrednio z > terminala tj: > #v- > perl -e 'open($fifo_fh,"+</tmp/radiod.piecia.fifo"); print $fifo_fh "pause > \n"; close $fifo_fh;' > #v+ i stąd działało. > Pytanie dlaczego? Perl wewnętrznie tworzy bufory dla każdego otwartego uchwytu i domyślnie nie są one automatycznie opróżniane po każdym zapisie. Dołóż na początku skryptu: use IO::Handle; a po otwarciu fifo: autoflush $fifo_fh; > Przy okazji dlaczego dla trybu ">" przy otwieraniu fifo blokuje mi > skrypt? Przy czym dla ostatniego przykładu nieważne czy dam ">" czy > "+<"(lub "+>") to nie blokuje. Jesteś pewien, że blokuje się na samym otwieraniu, tj. na syscallu open()?
Technical Details
Message-ID:
<20110724140130.6b8b4567@polsl.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!polsl.pl!not-for-mailReferences:
<pan.2011.07.20.16.25.16@dracorp.one.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!polsl.pl!not-for-mail From: Adam Osuchowski <someone@somewhere.com> Newsgroups: pl.comp.lang.perl Subject: Re: Zapis do fifo Date: Sun, 24 Jul 2011 14:01:30 +0000 (UTC) Organization: Politechnika Slaska, Gliwice Lines: 33 Message-ID: <20110724140130.6b8b4567@polsl.pl> References: <pan.2011.07.20.16.25.16@dracorp.one.pl> NNTP-Posting-Host: hydra.ck.polsl.pl Mime-Version: 1.0 X-Trace: polsl.pl 1311516090 3361 2a01:1d8:1:1::11 (24 Jul 2011 14:01:30 GMT) X-Complaints-To: news@polsl.pl NNTP-Posting-Date: Sun, 24 Jul 2011 14:01:30 +0000 (UTC) In-Reply-To: <pan.2011.07.20.16.25.16@dracorp.one.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit