Se repornesc in adevaratul sens al cuvantului.
Am pus _imediat_ dupa declararea variabilelor afisarea unui text (si in 
gateway, si in server). Dupa ce rulez din cygwin clientul cu "exit" se fac 
acele afisari, ca si cum s-ar fi inchis si ar fi repornit din nou. Acest lucru 
se intampla fix de 6 ori. A 6-a oara chiar se inchid.

int main (int argc, char * argv[]) {
       
       // Declaratii
        
        printf("Pornire GW\n");
        fflush(stdout);

       // Operatii de deschidere/creare mailsloturi
       while (1) {
              // Citire cmd din "\\.\mailslot\gateway"
              if (.....) {
                     ......
                     break;
              } //endif

              // Alte operatii
        } //endwhile

        // Operatii de cleanup
        return 0;
} //endmain

Sunt sigur ca nu am multiple while-uri si mesajele _sunt_ primite, in sensul ca 
tema este perfect functionala, mai putin exit-ul asta. Checker-ul trece, in 
functia check_test(), de partea cu:

wait ${clients_pids[$client]} > $LOG_FILE 2>&1

Dar se agata, in aceeasi functie, din cauza:

wait $srv > $LOG_FILE 2>&1
________________________________________
From: [email protected] [[email protected]] on behalf of 
Razvan Crainea [[email protected]]
Sent: Saturday, April 07, 2012 7:34 PM
To: Sisteme de Operare
Subject: Re: [so] [TEMA2][WIN] Problema Exit

2012/4/7 Adrian-Gabriel MICLE <[email protected]>:
> Salut!
>
> Am o mica problema. Gateway-ul meu citeste intr-un ciclu while comenzi din 
> mailslot-ul in care scriu clientii. Totul merge fain frumos pana cand se 
> primeste comanda exit. Pentru tratarea acesteia folosesc urmatoarea secventa:
>
> if (strncmp(cmd.name, "exit", 4) == 0) {
>        /*
>         * foreach server:
>         *      send exit;
>         */
>        break;
> }
>
> In urma iesirii din while se fac operatiile de cleanup si apoi return. Insa, 
> programele, in loc sa se opreasca, se repornesc. Trebuie sa dau "exit" de 
> vreo 6 ori ca sa-mi iasa efectiv.
>
> Intuieste cineva care ar putea fi problema?
>

Salut, Gabriel!

În ce sens se repornesc, se execută din nou programul? Ești sigur ca
if-ul respectiv nu este în două bucle:

while (cond1) {
    ...
    while (cond2) {
        ...
       if (...){
       }
    }
}


--
Răzvan Crainea
_______________________________________________
http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
_______________________________________________
http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii

Raspunde prin e-mail lui