Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261

    help

    ragazzi mi sono trovato in un esercizio di fronte ad un espessione simile
    pid_t pid;


    if(!pid)
    {
    istruzioni...
    }

    quand'è che le istruzioni sono eseguite ?....in genere mi trovo sempre dinanzi a un != ,== ma mai solo !....che significa solo !.

    aiutatemi per favore

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    ecco il codice è esattamete questo:
    inoltre in fase di compilazione mi da problemi per exit(0); perchè?

    #include <sys/types.h>
    #include <stdio.h>
    #include <sys/wait.h>

    main()
    {
    pid_t pid;
    int status=0;

    /* genera primo figlio*/

    pid=fork();

    if (!pid)
    {
    printf("Sono il primo filgio:PID=%d PPID=%d\n",getpid(),getppid());
    exit(0);
    }

    getchar();

    }

  3. #3

    Re: help

    Originariamente inviato da aspire1982
    ragazzi mi sono trovato in un esercizio di fronte ad un espessione simile
    pid_t pid;


    if(!pid)
    {
    istruzioni...
    }

    quand'è che le istruzioni sono eseguite ?....in genere mi trovo sempre dinanzi a un != ,== ma mai solo !....che significa solo !.

    aiutatemi per favore
    che se pid vale 0 esegue il codice....

  4. #4
    Per questa volta ti aiuto, ma leggi il regolamento prima di postare.
    codice:
    if (!pid)
    è lo stesso di
    codice:
    if ( pid!=0 )
    Ci sono 10 tipi di persone al mondo, chi conosce il sistema binario e chi no.

  5. #5
    Ops Ultra mi ha anticipato, però dovevi fare anche i rimproveri
    Ci sono 10 tipi di persone al mondo, chi conosce il sistema binario e chi no.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da bigmickey
    codice:
    if (!pid)
    è lo stesso di
    codice:
    if ( pid!=0 )
    No, !pid è equivalente a pid == 0
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    ma perchè mi da un errore su exit(0); ma dice " incopatible implicit declaration of built-in function 'exit' " ....cosa puo essere?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da aspire1982
    ma perchè mi da un errore su exit(0); ma dice " incopatible implicit declaration of built-in function 'exit' " ....cosa puo essere?
    #include <stdlib.h>
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    ragazzi non ho capito il perchè del comportamento.....quando eseguo la prima fork pid =0 ma quindi le istruzioni di if(!pid) sono eseguite mentre come regola quelle dell'else non dovrebbero essere eseguite invece le esegue a perchè?

    #include <sys/types.h>
    #include <stdio.h>
    #include <sys/wait.h>
    #include <stdlib.h>
    main()
    {
    pid_t pid;
    int status;

    /* genera primo figlio*/

    pid=fork(); /*esattamete qui */


    if (!pid)
    {

    printf("Sono il primo filgio:PID=%d PPID=%d\n",getpid(),getppid());
    exit(0);

    }
    else
    {

    pid=fork();

    if (!pid)
    {
    printf("Sono il secondo filgio:PID=%d PPID=%d\n",getpid(),getppid());
    exit(0);
    }
    else
    {
    pid=wait(&status);
    printf("primo figlio terminato:PID=%d Stato=%d\n",pid,status);

    pid=wait(&status);
    printf("secondo figlio terminato:PID=%d Stato=%d\n",pid,status);
    printf("programma terminato");


    }



    getchar();

    }
    }

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da aspire1982
    ragazzi non ho capito il perchè del comportamento.....quando eseguo la prima fork pid =0 ma quindi le istruzioni di if(!pid) sono eseguite mentre come regola quelle dell'else non dovrebbero essere eseguite invece le esegue a perchè?
    Beh, se usi la fork è così!! Il processo si "biforca" (mica per niente la funzione ha quel nome ....).
    Quando la fork viene eseguita viene creato il processo figlio e quando ritorna, ritorna da entrambi i processi padre e figlio, con valori di ritorno diversi chiaramente. Se tutto va bene e senza errori, chiaramente, altrimenti ritorna -1 senza aver creato il processo figlio.

    Immagina la chiamata alla fork ... in cui c'è solo il processo padre. Immagina poi di "vedere" il tuo sorgente "sdoppiato" ... quando la fork ritorna, lo fa su 2 fronti: sia nel processo padre che in quello figlio. Ritornando però valori differenti possono prendere 2 strade diverse.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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.