IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probléme avec fork()


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    D'après souviron34, toutes.

    D'après moi, aucune (c'est de lui que je tenais les "certaines"), sauf peut-être celle de cygwin, et encore je suis loin d'en être sur.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Et comment une telle chose pourrait-elle être implémentée?

    Remarque, le re-jeu serait très pratique pour le débogage. Mais parle t-on de systèmes déterministes?

    Note : Le re-jeu est une méthode de débogage en programmation logique (CLP).

  3. #23
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est à lui qu'il faut le demander, pas à moi.

    Ça me parait aussi logique qu'à toi, tu sais...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #24
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    tres simple de verifier...

    Lit un petit fichier juste avant et stocke-le dans un tableau de chaines allouees dynamiquement...

    Si c'est la "copie", les adresses des chaines devraient etre les memes, si je vous suis...

    Si il refait le code, les adresses seront differentes

    (a mon avis, si c'etait la copie, ca marcherait pas, car pas de memoire partagee , or on a 2 processus differents... )

  5. #25
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je n'ai pas de système unixoïde sous la main, mais je suis persuadé que c'est de la copie, et si, ça marcherait:
    Deux processus peuvent référencer exactement la même adresse virtuelle, et pourtant "voir" deux zones mémoire différentes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #26
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    tres simple de verifier...

    Lit un petit fichier juste avant et stocke-le dans un tableau de chaines allouees dynamiquement...

    Si c'est la "copie", les adresses des chaines devraient etre les memes, si je vous suis...
    Bien sûr que les adresses sont les mêmes! On ne va quand même pas perde notre temps à faire des expériences absurdes dont on connait le résultat par avance pour te faire plaisir.

    Citation Envoyé par souviron34 Voir le message
    Si il refait le code, les adresses seront differentes
    Pas forcément. Au contraire, je parierai que l'allocation dynamique est déterministe.

    Citation Envoyé par souviron34 Voir le message
    (a mon avis, si c'etait la copie, ca marcherait pas, car pas de memoire partagee , or on a 2 processus differents... )
    Tu ne comprends toujours pas ce que fait fork().

  7. #27
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    J'ai fait des tests, et je n'arrive pas à avoir des pointeurs différents.

    Par exemple avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    #include <fcntl.h>
     
    int main(int argc, char **argv)
    {
      char *texte[10] = {0};
      int i = 0;
     
      for(i = 0; i < 10; i++)
        {
          texte[i] = (char *)malloc(1 + i);
        }
     
      if(fork() < 0)
        {
          exit(1);
        }
     
      for(i = 0; i < 10; i++)
        {
          printf("%d : texte[%d] = %p\n", getpid(), i, texte[i]);
        }
     
      return 0;
    }

  8. #28
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Rajoute un affichage de texte juste avant le fork(), s'il te plait, juste pour faire joli et nous dire si le texte est affiché deux fois (il faut s'attendre à tout, mais je parierais que non)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #29
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Au début j'avais essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <stdlib.h>
     
    int main(int argc, char **argv)
    {
      void * foo = 0;
     
      printf("%d : foo = %p\n", getpid(), foo);
     
      foo = malloc(42);
     
      if(fork() < 0)
        {
          exit(1);
        }
     
      printf("%d : foo = %p\n", getpid(), foo);
     
      return 0;
    }
    et cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1737 : foo = (nil)
    1738 : foo = 0x804a008
    1737 : foo = 0x804a008
    Je me paluche le man de fork en attendant.

    Par contre,
    Deux processus peuvent référencer exactement la même adresse virtuelle, et pourtant "voir" deux zones mémoire différentes.
    si tu as un exemple, ça m'éclairerait.

  10. #30
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par valefor Voir le message
    J'ai fait des tests,
    Pourquoi?

    Si je te dis que printf("%d",2+2) affiche 42, tu fais le test aussi?

    Citation Envoyé par valefor Voir le message
    et je n'arrive pas à avoir des pointeurs différents.
    Tu veux dire :
    • chaque exécution du programme affiche deux fois la même chose, ou
    • toutes les exécutions du programme affichent exactement la même chose (= le test ne teste rien du tout)
    ?

  11. #31
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le système d'exploitation est fait pour que par défaut, chaque programme se croie seul sur le système.
    C'est une des raisons pour lesquelles l'adressage est virtuel : Un programme peut voir quelque chose à l'adresse virtuelle X, mais la "vraie" adresse en mémoire, ou dans le fichier de pagination, est seulement connue du système d'exploitation.

    Ainsi, les variables globales d'un programme pourraient avoir une adresse virtuelle fixe (par exemple, un int se trouvant toujours à l'adresse virtuelle 0x00000004). Si tu fais tourner deux programmes, chacun verra sa variable à l'adresse virtuelle 0x00000004, mais les vraies adresses seront différentes (par exemple, l'un peut être voir les adresses réelles 1000 à 1999, tandis que l'autre verra les adresses réelles 2000 à 2999).

    Et en plus, avec les histoires de pagination, mise de la mémoire sur le disque et autre, ces adresses réelles peuvent changer au cours du temps. Mais du point de vue du processus, l'adresse virtuelle ne change pas.

    Aussi, la "mémoire partagée" est une fonction spéciale du système d'exploitation, qui donne à deux processus l'accès à la même adresse réelle (qui, en fait, peut être représentée par deux adresses virtuelles différentes).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #32
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par valefor Voir le message
    et cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1737 : foo = (nil)
    1738 : foo = 0x804a008
    1737 : foo = 0x804a008
    Citation Envoyé par corrector Voir le message
    Tu veux dire :
    • chaque exécution du programme affiche deux fois la même chose, ou
    • toutes les exécutions du programme affichent exactement la même chose (= le test ne teste rien du tout)
    ?


    Visiblement, c'est ni l'un ni l'autre, c'est ce que je disais () :

    le pid change dans son print, ce qui veut dire que chaque programme est reexecute....

  13. #33
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    le pid change dans son print, ce qui veut dire que chaque programme est reexecute....
    Là, 'faut expliquer ton raisonnement...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #34
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ok , desole j'avais lu trop vite..

  15. #35
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Visiblement, c'est ni l'un ni l'autre, c'est ce que je disais () :
    Non, visiblement tu regardes mal. Il n'y a qu'une seule exécution du programme.

    C'est bien ce que je pensais, le test ne teste rien, parce qu'il n'y a même pas de base de référence pour comparer.

  16. #36
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Un exemple qui devrait bien tester:
    Code pseudo-C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #define SIZE 20
     
    int main()
    {
    	srand(time)
     
    	int pidAvant = getpid();
    	int val[SIZE]
    	for(i=0 ; i<SIZE ; i++)
    		val[i] = rand();
     
    	puts("fork in 2 seconds");
    	sleep(2); /*pour forcer srand(time) à régler une autre "graine"*/
    	fork();
    	printf("Avant=%d Après=%d", pidAvant, getpid());
     
    	for(i=0 ; i<SIZE ; i++)
    		printf("process%d[ %d ] : %d", getpid(), i, val[i]);
    }
    Avec un code de ce genre, si le code est ré-exécuté, on aura des valeurs aléatoires différentes.

    Et à mon avis, tout comme celui de corrector, elles devraient être identiques.

    Edit: Je rentre chez moi et j'ai 1h30 de transports. À plus!
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #37
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Rajoute un affichage de texte juste avant le fork(), s'il te plait, juste pour faire joli et nous dire si le texte est affiché deux fois (il faut s'attendre à tout, mais je parierais que non)...
    Fait plutôt une lecture sur stdin, et imprime la valeur lue après le fork...

    (et entre une valeur différente les deux fois )

  18. #38
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Un exemple qui devrait bien tester:
    Code pseudo-C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #define SIZE 20
     
    int main()
    {
    	srand(time)
     
    	int pidAvant = getpid();
    	int val[SIZE]
    	for(i=0 ; i<SIZE ; i++)
    		val[i] = rand();
     
    	puts("fork in 2 seconds");
    	sleep(2); /*pour forcer srand(time) à régler une autre "graine"*/
    	fork();
    	printf("Avant=%d Après=%d", pidAvant, getpid());
     
    	for(i=0 ; i<SIZE ; i++)
    		printf("process%d[ %d ] : %d", getpid(), i, val[i]);
    }
    Avec un code de ce genre, si le code est ré-exécuté, on aura des valeurs aléatoires différentes.
    Rhaa j'ai plus d'unixoide à disposition pour tester ça. Mais je pense qu'on aura les mêmes valeurs dans le père et dans le fils. Parce que tant qu'un test ne travaille que sur la mémoire ben on ne prouve rien vu que chaque processus reçoit une copie de la mémoire au moment du fork. Or quand le fork est lancé, le tableau a déjà été rempli.

    En fait, plus je réfléchis et plus je me dis que du point de vue des programmeurs systèmes, il serait plus facile de faire commencer le fils au moment du fork que de lui faire rejouer tout le code exécuté avant tout en lui demandant de ne pas changer les valeurs trouvées lors de la première exécution.

    D'ailleurs, si je tape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sleep(300);
    printf("Depart\n");
    fork();
    printf("Fin\n");
    Est ce que le fils va vraiment rejouer tout le code et attendre lui-aussi connement 5mn avant d'afficher "hello" ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #39
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Bon, j'ai fait le test sur mon vieux Ubuntu 5.04:
    Code C définitif : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <stdio.h>
    #include <unistd.h>
    #include <time.h>
    #include <math.h>
     
    #define SIZE 10
     
    int main()
    {
    	int pidAvant = getpid();
    	int val[SIZE];
    	size_t i;
     
    	srand((int)time(NULL));
     
    	for(i=0 ; i<SIZE ; i++)
    		val[i] = rand();
     
    	puts("fork in 2 seconds");
    	sleep(2); /*pour forcer srand(time) à régler une autre "graine"*/
    	fork();
    	printf("Avant=%d Après=%d\n", pidAvant, getpid());
     
    	for(i=0 ; i<SIZE ; i++)
    		printf("process%d[ %d ] : %d\n", getpid(), i, val[i]);
    	return 0;
    }
    Et la sortie:
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    link@ubuntu:~/TestsCpp$ gcc -o testfork TestFork.c
    link@ubuntu:~/TestsCpp$ ./testfork
    fork in 2 seconds
    Avant=8102 AprÚs=8103
    process8103[ 0 ] : 688197052
    process8103[ 1 ] : 1049773403
    process8103[ 2 ] : 413948371
    process8103[ 3 ] : 1623950930
    process8103[ 4 ] : 755136942
    process8103[ 5 ] : 762038674
    process8103[ 6 ] : 539295439
    process8103[ 7 ] : 1471486800
    process8103[ 8 ] : 1637510112
    process8103[ 9 ] : 923374679
    Avant=8102 AprÚs=8102
    process8102[ 0 ] : 688197052
    process8102[ 1 ] : 1049773403
    process8102[ 2 ] : 413948371
    process8102[ 3 ] : 1623950930
    process8102[ 4 ] : 755136942
    process8102[ 5 ] : 762038674
    process8102[ 6 ] : 539295439
    process8102[ 7 ] : 1471486800
    process8102[ 8 ] : 1637510112
    process8102[ 9 ] : 923374679
    link@ubuntu:~/TestsCpp$
    Cela montre que non seulement les valeurs sont identiques, mais le "pid avant fork()" est identique également.
    Cela suffit-il à prouver que fork() ne ré-exécute pas ce que le programme a déjà accompli ?
    (de plus, réexécuter le programme serait plus compliqué que la simple duplication de son état...)

    Quant à ce que j'avais dit sur cygwin, on peut aussi spéculer que son implémentation de fork(), au lieu de ré-exécuter, crée un processus séparé et recopie "manuellement" l'état du processus précédent, à coup de VirtualAllocEx(), ReadProcessMemory(), WriteProcessMemory()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. problème avec fork()
    Par Alays dans le forum C
    Réponses: 15
    Dernier message: 05/10/2012, 10h29
  2. problème avec fork()
    Par Boss38400 dans le forum Débuter
    Réponses: 4
    Dernier message: 20/04/2010, 22h04
  3. Problème avec les forks
    Par dot-_-net dans le forum C
    Réponses: 10
    Dernier message: 09/05/2008, 23h29
  4. problème avec fork et execvp !
    Par julien.cousineau dans le forum Linux
    Réponses: 0
    Dernier message: 07/10/2007, 23h38
  5. [Perl]problème avec fork
    Par LE NEINDRE dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 23/09/2005, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo