nichtblockierend lesen

Hallo NG,

open2( \*Reader, \*Writer, "xy.exe");


....


if(es_gibt_was_zu_lesen){... <Reader>}




wie kann ich denn "es_gibt_was_zu_lesen" realisieren ohne zu blockieren?


Gruß Frank
Frank Kulow [ Mo, 31 Juli 2006 10:37 ] [ ID #1412047 ]

Re: nichtblockierend lesen

* Frank Kulow [2006-07-31]:

Hallo Frank,

> open2( \*Reader, \*Writer, "xy.exe");
> if(es_gibt_was_zu_lesen){... <Reader>}
> wie kann ich denn "es_gibt_was_zu_lesen" realisieren ohne zu blockieren?

entweder mit select überprüfen, ob es zu lesen da ist, oder O_NONBLOCK
per fcntl setzen, damit das lesen nicht mehr blockiert:

perldoc -f select
perldoc IO::Select

perldoc -f fcntl
fcntl(2)

Gruß
Christian


--
Morgens 'n Bit, abends fit.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas [ Mo, 31 Juli 2006 10:58 ] [ ID #1412048 ]

Re: nichtblockierend lesen

da hab ich wohl schlechte Karten oder?:

Cannot set GLOB(0x182f95c) to non-blocking mode: Bad file descriptor


$ perl -v

This is perl, v5.8.7 built for MSWin32-x86-multi-thread



das selbe script mit:

$ perl -v

This is perl, v5.8.7 built for cygwin-thread-multi-64int


tut's


Frank
Frank Kulow [ Mo, 31 Juli 2006 14:05 ] [ ID #1412051 ]

Re: nichtblockierend lesen

* Frank Kulow [2006-07-31]:

Hallo Frank,

> Cannot set GLOB(0x182f95c) to non-blocking mode: Bad file descriptor
> $ perl -v
> This is perl, v5.8.7 built for MSWin32-x86-multi-thread

es gibt einen Grund, warum es neben Windows noch richtige
Betriebssysteme gibt.

> das selbe script mit:
> $ perl -v
> This is perl, v5.8.7 built for cygwin-thread-multi-64int
> tut's

Ja, O_NONBLOCK gibt es nur unter Windows. Bleibt dir nur die Variante
mit select.

Gruß
Christian

--
Ihr da Ohm, macht doch, Watt ihr Volt.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas [ Mo, 31 Juli 2006 21:56 ] [ ID #1413634 ]
Perl » de.comp.lang.perl.misc » nichtblockierend lesen

Vorheriges Thema: Problem mit Regulären Ausdrücken
Nächstes Thema: Perl/MySQL Umlaute-Problem