Newsgroup: it.comp.os.linux.development
Titolo: getopt e FIFO

Sto preparando per l'università l'esame di sistemi operativi.
Ho 2 difficoltà.
La prima riguarda la FIFO come comunicazioni tra processi e programmi.
Il professore ci ha detto poco.
C'e' in rete una qualche riferimento da cui capire e vedere qualche
esempio? Ho cercato ma non ho trovato molto.
Inoltre ho qualche difficoltà con la getopt.
     switch(i)
     {
        case 's': a=1; break;
        case 'p': a=2; break;
        case 'l': a=3; break;
        default : a=0;
     }
Se nel programma (chiamiamolo 'prova') specifico le opzioni -s oppure
l'opzione -p oppure -l, la variabile a viene correttamente settata.
Ora, se invece non specifico nulla (quindi scrivo al prompt direttamente
e solo 'prova') dovrebbe valere il comando di default e quindi settare
a=0. Ma non funziona. Come mai? Dove sbaglio?
Il problema l'ho risolto settando a=0 prima dello switch, ma vorrei
capire dove c'e' l'errore.
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 capire dove c'e' l'errore.
If  getopt() finds another option character, it returns that character...
Se non c'e' alcuna opzione getopt dovrebbe ritornare -1.
Puoi fare un controllo a monte su argc per vedere se non ci sono argomenti
passati.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Take It All, Our Gold, Our Homes, Our Life, But We Didn't Kill 
	    Your Christ! !>- Blind Guardian - The Script For My Requiem

 passati.
Ok ma il default allora non funziona?
Grazie, cmq. Avevo già visto il manuale e cmq avevo (ed ho) difficoltà. Mi
arrangerò ...

 Ok ma il default allora non funziona?
Dovrebbe. Mandaci il codice del blocco che circonda lo switch, in particolare
dalla getopt allo switch.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 dalla getopt allo switch.
Eccolo:
while ((i=getopt(argc, argv,"s:p:l"))!=-1)
   {
     switch(i)
     {
        case 's': segnale=1; break;
        case 'p': verify=1; break;
        case 'l': list=1; break;
        default : stop=1;
     }
   }
Grazie
P.S.: Non c'e' in rete un qualche esempio di uso di comunicazione FIFO tra
processi? Dal man e dallo Stevens non mi è chiaro come utilizzarle.
Grazie

    }
vado ad occhio e potrei dire una cavolata ma getopt restituisce -1 se   
non c'e' piu' niente da parsare e quando non c'e' piu' niente da parsare 
la condizione del while e' false e lo switch non viene eseguito.
Ripeto potrei dire una cavolata ma e' la prima cosa che mi e' venuta in    
mente
Ciao.
C.
-- 
Cage - Just another Debian user
Autoproclamatosi fan N°1 di Sucaman
http://www.autistici.org/interzona/
zetalab: 
http://www.inventati.org/zetalab/

 mente
Insomma la default non ha alcun senso. Giusto? Grazie
P.S.: Per le FIFO? Nessun aiuto? Ti prego non dirmi di guardare il man, non
ci ho capito nulla da lě !!!!!!

 ci ho capito nulla da lì !!!!!!
Mi spiace ma non ho mai avuto necessita' di usarle, tutto quello che so
e' che sono delle pipe identificate da un file, quidi se un processo
apre il file fifo in lettura e un secondo processo lo apre in scrittura,
possono comunicare come se fossero collegati con una pipe.


 processi? Dal man e dallo Stevens non mi è chiaro come utilizzarle.
Vediamo di capirci. Tu vuoi degli esempi su come usare una fifo, giusto?
Allora inizia a spiegare quale meccanismo vuoi usare. Named pipe, unnamed
pipe, socket...
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
	**ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
 -<! Woe to you, oh Earth and Sea, for the Devil sends the Beast with
      wrath, because He knows the time is short... !>- Revelations, XIII - 18

 pipe, socket...
Le FIFO dovrebbero essere le Named Pipe, giusto? Insomma queste.
Grazie :-)))

 Le FIFO dovrebbero essere le Named Pipe, giusto? Insomma queste.
Con mkfifo crei un file gestito dall'OS come FIFO. Ci puoi leggere e
scrivere normalmente. Tutti i dati vengono bufferizzati dal kernel e
restituiti con meccanismo FIFO. Per evitare casini conviene aprirlo sia in
lettura che in scrittura prima di iniziare a usarlo, altrimenti di default
blocca.
man 3 mkfifo
man 4 fifo
NP: Iced Earth - Dante's Inferno
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Computer programmers never die, they just get lost in the processing. !>-