Programmation c sous linux
Fermé
salahprince
Messages postés
2
Date d'inscription
dimanche 24 mai 2015
Statut
Membre
Dernière intervention
7 juin 2015
-
Modifié par Whismeril le 8/06/2015 à 07:49
chris79 Messages postés 97 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 10 juin 2015 à 20:08
chris79 Messages postés 97 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 10 juin 2015 à 20:08
A voir également:
- Programmation c sous linux
- Application de programmation - Guide
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Quel linux choisir - Guide
1 réponse
chris79
Messages postés
97
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
1 février 2016
25
10 juin 2015 à 20:08
10 juin 2015 à 20:08
Slt,
Si ton programme ne compile pas, c'est lié aux raisons suivantes :
- tu utilises mal la fonction wait(). Pour info son prototype est le suivant :
--> cette fonction bloque le processus jusqu'à ce qu'un des processus fils se termine. Elle renvoie ensuite le pid du fils terminé. La variable status indique les circonstances de fin de processus du fils...
Toi tu veux attendre un fils spécifique, tu dois donc utiliser la fonction dédiée :
Soit par exemple :
Au passage, pid1 et autres sont de type pid_t et non int. Il faut veiller à respecter l'API définie surtout que int a une taille qui dépend de la machine ...
- Autre erreur, tu écris :
au lieu de :
C'est vicieux car ça doit certainement compiler mais ne teste pas la valeur de j mais lui assigne n-1....bref une sale histoire.
--> Une bonne habitude à prendre est de placer la variable que tu testes à droite de l'opérateur :
Après j'ai pas regardé ce que faisait ton prog dans le détail....il faut vraiment prendre l'habitude de nommer les variables par ce qu'elles représentent...."a" ou "b" ça ne veut pas dire grand chose....
Bonne chance ^^
Si ton programme ne compile pas, c'est lié aux raisons suivantes :
- tu utilises mal la fonction wait(). Pour info son prototype est le suivant :
pid_t wait (int * status)
--> cette fonction bloque le processus jusqu'à ce qu'un des processus fils se termine. Elle renvoie ensuite le pid du fils terminé. La variable status indique les circonstances de fin de processus du fils...
Toi tu veux attendre un fils spécifique, tu dois donc utiliser la fonction dédiée :
pid_t waitpid (pid_t pid, int * status, int options)
Soit par exemple :
waitpid(pid1,NULL,0);
Au passage, pid1 et autres sont de type pid_t et non int. Il faut veiller à respecter l'API définie surtout que int a une taille qui dépend de la machine ...
- Autre erreur, tu écris :
if(j = n -1)
au lieu de :
if(j == n -1)
C'est vicieux car ça doit certainement compiler mais ne teste pas la valeur de j mais lui assigne n-1....bref une sale histoire.
--> Une bonne habitude à prendre est de placer la variable que tu testes à droite de l'opérateur :
if ( j = MACONSTANTE) {} // ne génère pas d'erreur...vicieux ! if (MACONSTANTE = j) {} // génère une erreur dc on évite un debug futur ;)
Après j'ai pas regardé ce que faisait ton prog dans le détail....il faut vraiment prendre l'habitude de nommer les variables par ce qu'elles représentent...."a" ou "b" ça ne veut pas dire grand chose....
Bonne chance ^^