[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: Re: Re: [PROGRAMMERING] [C] Læ



Jeg vil lige opsumere, hvad det hele gik ud på fra start. Det kan være jeg har fået udtrykt mig upræcist undervejs.

1) Jeg har tilføjet noget kode i en netværksdriver, således at den skriver til filen /proc/test. Dette sker hver gang den modtager en pakke, ved at overskrive det tidligere indhold i /proc/test.

2) Jeg har lavet et andet program, som skal læse fra /proc/test. Dette fungerer også fint nok, men jeg har gjort det nogenlunde på følgenede måde:

FILE *config_fp;
for(;;) {
  config_fp = fopen("/proc/net/hostap/wlan0/all_rx_info","r");
        while(fgets(line, MAX_LINE_LEN, config_fp) != NULL)
        {
        	**Noget check af om /proc/test har ændret sig
		**Hvis indholdet er ændret sig, kan jeg bruge det
	{
} 

Det her jeg gerne vil optimere, da det selvfølgelig er resource krævende og upraktisk hele tiden ("for(;;)") at læse /proc/test for at finde ud af om indholdet har ændret sig eller ej. Mit program laver sådan set ikke andet end at læse og reagere på at /proc/test har info om en ny pakke.

Hvordan kan man gøre dette smartere ?

Mvh.
Martin

NB: Og til Peter - Tak, for din tålmodighed med mig :-)

> On Wed, 21 Jan 2004, Martin Schiotz wrote:
> 
> > Jeg tror, det er her jeg brug for et hint, min erfaring med c er
> > ikke så stor. Jeg tænkte på at bruge select() udelukkende for at
> > registrerer, når filen er blokeret / ikke blokeret (som du
> > foreslår). Dvs. når der er ny data i /proc/test at læse.
> 
> Hvad laver dit program når der ikke er data fra /proc/test?
> Skriver på skærmen hvert sekund, læser en anden fil,
> læser input fra brugeren?
> 
> select() venter på at der sker noget med en fil, eller at der kommer
> en time-out.
> 
> Her er et eksempel
> http://www.lowtek.com/sockets/select.html
> som nok er lidt uoverskueligt i din sammenhæng.
> 
> > Men er der andre måder ?  (Hvad mente du med at blokere read())
> 
> Det er nok NON-BLOCKING, som er bedst at undgå. select er bedre.
> 
> /hans
> --
> Hamletsgade 4 - 201, DK-2200 København N, Phone: +45 3582 9079
> Schou Industries ApS      http://schou.dk/    CVR: 26 13 44 39
> --------------------------------------------------------------
> If KNOPPIX can't do it, Linux can't do it.
> 					-- Binh Nguyen
> 




 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:43 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *