OT: linux-Too many open files

Zapletal Martin zapletal na inoma.cz
Úterý Říjen 15 17:58:52 CEST 2013


No, to mně taky napadlo a tak jsem data začal cpát do TStringList a zapsal je, jen když jich tam bylo více než 10. To znamená, že data přečtená v OnTimer šla nejprve do TStringList-u a jako teprve potom do souboru. A bylo to pořád stejné. Čumím do toho kódu už pátý den a už jsem z toho zpitomělej. Už jsem zkoušel hodně variant...
  ----- Original Message ----- 
  From: Milan Kratochvíl 
  To: HW-news 
  Sent: Tuesday, October 15, 2013 5:50 PM
  Subject: Re: OT: linux-Too many open files


  Když v Lazaru zapomenu použít knihovnu cthreads tak mi thready končí s s touto hláškou (jestli si dobře pamatuji), ale Lazarus to tam dává automaticky.

  Teď řeknu jen myšlenku, kterou nemám podloženou a nevím zda takto TTimer pracuje.
  Není možné, že nějaký zápis trvá déle a tak je událost OnTimer vyvolána ještě během vykonávání předchozí události.

  Milan



  Dne 15.10.2013 17:34, Zapletal Martin napsal(a):

    Lazarus, v události OnTimer přečtu data a předám je proceduře, která jen zapíše na disk. Mohlo by to být tím, že to je v Timeru a ne v threadu? Mám i jinou aplikaci a ta data čte v threadu, stejnou procedurou je zapisuje a tam to nepadá.

    Zaplik
      ----- Original Message ----- 
      From: Milan Kratochvíl 
      To: HW-news 
      Sent: Tuesday, October 15, 2013 5:26 PM
      Subject: Re: OT: linux-Too many open files


      V jakém kompileru to máte? Zapisujete v těle programu nebo v threadu?
      Milan


      Dne 15.10.2013 16:39, Zapletal Martin napsal(a):

        Zdravím.
        Nedokázal by mi prosím někdo poradit, co dělám špatně při zápisu dat? V pascalu klasicky zapisuji data do souboru pomocí:

        AssignFile(F, cesta);
        Append(F);
        WriteLn(F, co);
        CloseFile(F);

        Ale po asi třech hodinách zápisu do toho souboru(mi to klekne na uvedené hlášce). Soubor je malý, nemá ani 1/2 mega. Velikost má pokaždé jinou. Na netu jsem našel info o této problematice, že se má zvednout hodnota v souboru /proc/sys/fs/file-max na cca 200000. Ale ani to nepomohlo. Se souborem myslím pracuji korektně a zapisuji do něj tak 5-10x za minutu. Žádný drama. Prostě jen přečtu nasbíraná data a zapíši do souboru. Ale POZOR! Pokud si udělám jednoduchý testovací cyklus a v něm zapisuji data do toho souboru, zapíšu tam třeba 50000 záznamů jako by nic. Proč se mi neuvolňují popisovače a ucpává se to? Linuxář moc velký nejsem, 95% aplikací dělám pro Win ale na to, jak je to prosté si s tím nevím rady. Medium pro zápis je OK, žádné chyby nevykazuje. Je nějaký příkaz jak uvolňovat popisovače souborů? Disk je FAT32. Pomohlo by jej předělat na nějaký EXT??? Potíž je, že by měl zůstat čitelný pro Win.

        Zaplik

         

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




--------------------------------------------------------------------------
      _______________________________________________
      HW-list mailing list  -  sponsored by www.HW.cz
      Hw-list na list.hw.cz
      http://list.hw.cz/mailman/listinfo/hw-list


     

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




------------------------------------------------------------------------------


  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20131015/0add65bf/attachment.htm>


Další informace o konferenci Hw-list