Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    [C] Ricezione richieste da una pipe

    Ciao, dovendo realizzare un semplice server che accetti richieste da una pipe ho semplicemente utilizzato una pipe con nome creata dal server stesso, aperta in lettura con l'opzione O_NONBLOCK e poi ho fatto un ciclo del genere:

    codice:
    ...
    ...
    while (TRUE)
    {
    if(read(fd, buffer, MAXBUFFER) > )
    {
    ...
    ...
    ...
    ...
    ...
    }
    /*Altrimenti torno all'inizio del ciclo infinito*/
    }
    E' giusto fare cosi' oppure c'e' un modo per evitare di fare continuamente delle read che restituiscono 0 finche' un qualche client scrive sulla pipe con nome ?! Ad esempio non c'e' la possibilita' di ricevere un segnale quando avviene una scrittura sulla pipe oppure un altro modo cosicche' si possa evitare di sprecare "risorse" ?

    thks

  2. #2

    Re: [C] Ricezione richieste da una pipe

    Originariamente inviato da Ed_Bunker
    Ciao, dovendo realizzare un semplice server che accetti richieste da una pipe ho semplicemente utilizzato una pipe con nome creata dal server stesso, aperta in lettura con l'opzione O_NONBLOCK e poi ho fatto un ciclo del genere:
    [...]
    E' giusto fare cosi' oppure c'e' un modo per evitare di fare continuamente delle read che restituiscono 0 finche' un qualche client scrive sulla pipe con nome ?! Ad esempio non c'e' la possibilita' di ricevere un segnale quando avviene una scrittura sulla pipe oppure un altro modo cosicche' si possa evitare di sprecare "risorse" ?
    Beh se la richiesta e` di dimensione fissa basta una read bloccante classica, e in questo modo non sprecheresti nulla.
    Altrimenti penso che select sia quello di cui hai bisogno.
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    Re: Re: [C] Ricezione richieste da una pipe

    Originariamente inviato da Ikitt
    Beh se la richiesta e` di dimensione fissa basta una read bloccante classica, e in questo modo non sprecheresti nulla.
    Altrimenti penso che select sia quello di cui hai bisogno.
    Se non sbaglio la read e' bloccante solo se la pipe e' "aperta" in scrittura da qualcun altro (Un client...) ma non ci sono dati da leggere. Invece se nessuno l'ha aperta in scrittura, la funzione read(...) ritorna sempre 0 a chi tenta di leggere qualcosa. Ora do un'occhiata alla select(...).

  4. #4
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Quindi potrei utilizzare la select passandogli il descrittore della pipe sulla quale voglio leggere, attendere (Passivamente) che la funzione ritorni per comunicare un cambiamento di stato della pipe stessa, quindi cominciare a fare delle "normali" read ?!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.