Linux, Perl, pretizeni systemu
Roman Julius
rjulius na seznam.cz
Středa Květen 29 17:19:42 CEST 2002
Prvni varianta opravdu system nezhrouti. Kdyz se dojde nakonec souboru,
pole se dal nezvetsuje. Druha zaplni pamet, pak swap a pak to jde cele
do haje.
Logicky to v poradku neni. Podobnou nekonecnou smycku jsem si moji
chybou v jednom skriptu vytvoril, spatne jsem testoval konec souboru.
A padal mi Linux. Tohle co je tady, je uz jenom vytah z toho skriptu
a zjednoduseni.
Hruza je, ze je to schopne polozit cely system.
rJ
-----Original Message-----
From: Honza Pazdziora [mailto:adelton na fi.muni.cz]
Sent: Wednesday, May 29, 2002 4:50 PM
To: linux na linux.cz
Subject: Re: Linux, Perl, pretizeni systemu
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