Linux, Perl, pretizeni systemu

Honza Pazdziora adelton na fi.muni.cz
Středa Květen 29 16:50:21 CEST 2002


On Wed, 29 May 2002 12:29:29 +0000 (UTC), Roman Julius <rjulius na seznam.cz> wrote:
> 
> Mam dve varianty Perlovskeho skriptu, samozrejme programatorsky
> je tam schvalne nekonecna smycka. Prvni varianta se zacykli, ale
> je v podstate neskodna. U druhe varianty ale na mem systemu dojde
> k totalnimu zaplneni veskere pameti. Pak zasahne kernel, zacne
> shazovat jednotlive procesy, ale bohuzel nezustane jen u tohoto
> procesu. Nakonec si to vynuti restart celeho systemu.
> 
> Je to jen muj problem nebo je to chyba obecna?
> 
> Linux RH 7.0, kernel 2.2.19, Perl 5.6
> 
> 1. varianta
> 
> #!/usr/bin/perl
> open(FILE,"xxx");      kratky textovy soubor
> while (TRUE) { push(@line,<FILE>); }
> 
> 2. varianta
> #!/usr/bin/perl
> open(FILE,"xxx");
> while (TRUE) {$x=<FILE>; push(@line,$x);}
> 
> Vyznate se v tom ?

No, v konecnem dusledku by Vam to melo zaplnit pamet oboje, ne? To
pole @line budete zvetsovat do nekonecna. Rozdil je v tom, ze pri
alokaci te promenne (druha moznost) se ten narust velikosti zrychli.

Cili bych se zeptal: opravdu je ta prvni moznost neskodna a logika
toho celeho je v poradku?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
------------------------------------------------------------------------


Další informace o konferenci Linux