OT: linux-Too many open files

Zapletal Martin zapletal na inoma.cz
Středa Říjen 16 08:01:14 CEST 2013


F je lokální proměnná TextFile procedury pro zápis. Nikdo jiný F nepoužívá nikde ani lokálně ani globálně. Když to krokuji, tak mi kód padne na Append(F), což znamená, že jej nedokáže otevřít pro přidání. Kód chyby IO vstup/výstup 4. Celá část práce se souborem je v chráněném bloku Try...Except. Program má GUI, takže běží jako okno jako v Gnome nebo jak se to jmenuje. Timer se před zápisem vypíná a po zápisu zase zapíná, takže další pokus o zápis v jednom okamžiku nehrozí.

Zaplik
  ----- Original Message ----- 
  From: Ladislav Vaiz 
  To: HW-news 
  Sent: Tuesday, October 15, 2013 8:17 PM
  Subject: Re: OT: linux-Too many open files


  Ta promenna F je co?
  Pokud je globalni pro oba thready, tak to muze vypadat takto:

  F=open()
  F=open()
  a mate prusvih, protoze prvni F uz nikdy nezavrete.

  Pokud je lokalni, tak je mozne, ze si Lazarus dela nejake zamykani (linux sam nic takoveho nedela), nekdy mezi open a close to spadne a pak mate stejny vysledek - neuzavreny soubor.

  Limit na otevrene soubory+sockety je defaultne 1024.

  L.


  On 15.10.2013 17:34, Zapletal Martin wrote:

    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/20131016/f43c477f/attachment.htm>


Další informace o konferenci Hw-list