Qu'elle est cette erreur?
Résolu/Fermé
A voir également:
- Qu'elle est cette erreur?
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Une erreur inattendue s'est produite instagram ✓ - Forum Instagram
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
7 réponses
Désoler Nassim je ne vois pas ton message, je peux par contre le lire sur ma boite mail.
désoler je ne télécharge pas et surtout ne répond pas au questionnaire obligatoire.
tu peux voir ce livre http://filerack.net/file/0s3M85
désoler je ne télécharge pas et surtout ne répond pas au questionnaire obligatoire.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
7 août 2013 à 23:15
7 août 2013 à 23:15
Sur quel OS réalises-tu ton code ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
9 août 2013 à 15:32
9 août 2013 à 15:32
Bonjour
D'après le nom du fichier, c'est un problème à l'édition des liens. Tu utilises quelque part dans ton code le symbole "initsema" (mais on ne le voit pas dans le code que tu donnes) alors qu'il n'est défini nulle part.
Il te manque peut-être une bibliothèque.
D'après le nom du fichier, c'est un problème à l'édition des liens. Tu utilises quelque part dans ton code le symbole "initsema" (mais on ne le voit pas dans le code que tu donnes) alors qu'il n'est défini nulle part.
Il te manque peut-être une bibliothèque.
effectivement je voulais mettre une sémaphore mais j'ai oublier. J'ai retirer la sémaphore quand j'ai copier..
J'ai essayer et le problème vient de là. Ce qui m'arrange car j'ai exactement la même erreur dans un autre code. Je vais modifier cela. (De plus j'en aurais besoin dans le code car il est pas synchroniser
Edit: Voici le code modifier suivi des code sema.c et sema.h
semaphore.c:
semaphore.h:
J'ai essayer et le problème vient de là. Ce qui m'arrange car j'ai exactement la même erreur dans un autre code. Je vais modifier cela. (De plus j'en aurais besoin dans le code car il est pas synchroniser
Edit: Voici le code modifier suivi des code sema.c et sema.h
#include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <sys/types.h> #include <string.h> #include "semaphore.h" // calcul de tube par 2 fils et renvoi au père int tube[2]; int main (int argc, char * argv[]){ //init des séma semaphore calcul; initsema(calcul,1); //verif tube crée if ((pipe(tube))<0){ perror("Le tube a rater"); exit(EXIT_FAILURE); } //fork du 1 fils pid_t a = fork(); P(calcul); if(a<0){ perror("Le fork a rater"); exit(EXIT_FAILURE);} if(a==0){ printf("Entrez 2 entiers pour les multiplier:\n"); int nb[2]; scanf("%3d %3d",&nb[0],&nb[1]); close(tube[0]); write(tube[1],&nb,sizeof(nb)); V(calcul); exit(0); } P(calcul); //fork du second fils pid_t b = fork(); if(b<0){ perror("Le fork a rater"); exit(EXIT_FAILURE);} if(b==0){ int result, nb[2]; close(tube[1]); read(tube[0],&nb,sizeof(nb)); result = nb[0]*nb[1]; close(tube[0]); write(tube[1],&result,sizeof(result)); V(calcul); } P(calcul); //père int rep; close(tube[1]); write(tube[0],&rep,sizeof(rep)); printf("Le résultat de la multiplication est %d \n",rep); V(calcul); wait(0); wait(0); return 0; }
semaphore.c:
#include "semaphore.h" void initsema(semaphore s, int nb){ pipe(s); char c = 'x'; int i; for (i=0;i<nb;i++) write (s[1] , &c , 1); } void P(semaphore s){ char c; read (s[0], &c , 1); } void V(semaphore s){ char c = 'x'; write (s[1] , &c , 1); }
semaphore.h:
#ifndef SP #define SP #include <stdio.h> #include <time.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <sys/types.h> #include <math.h> typedef int semaphore[2]; void initsema(semaphore s, int nb); void P(semaphore s); void V(semaphore s); #endif
bon finalement j'ai encore un problème que je ne comprend pas
aucun de mes printf n'est bon. Même pas le 1er tout au début. Mon programme compile et j'ai résolu l'erreur d'avant..
Merci d'avance
aucun de mes printf n'est bon. Même pas le 1er tout au début. Mon programme compile et j'ai résolu l'erreur d'avant..
Merci d'avance
#include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <unistd.h> #include <sys/types.h> #include <string.h> #include "semaphore.h" // calcul de tube par 2 fils et renvoi au père int tube[2]; int main (int argc, char * argv[]){ printf("prout"); //init des séma semaphore calcul; initsema(calcul,1); //verif tube crée if ((pipe(tube))<0){ perror("Le tube a rater"); exit(EXIT_FAILURE); } //fork du 1 fils pid_t a = fork(); printf("ici0"); P(calcul); if(a<0){ perror("Le fork a rater"); exit(EXIT_FAILURE);} if(a==0){ printf("Entrez 2 entiers pour les multiplier:\n"); int nb[2]; scanf("%3d %3d",&nb[0],&nb[1]); close(tube[0]); write(tube[1],&nb,sizeof(nb)); printf("ici"); V(calcul); exit(0); } P(calcul); printf("ici2"); //fork du second fils pid_t b = fork(); if(b<0){ perror("Le fork a rater"); exit(EXIT_FAILURE);} if(b==0){ int result, nb[2]; close(tube[1]); read(tube[0],&nb,sizeof(nb)); result = nb[0]*nb[1]; close(tube[0]); write(tube[1],&result,sizeof(result)); V(calcul); } P(calcul); //père int rep; close(tube[1]); write(tube[0],&rep,sizeof(rep)); printf("Le résultat de la multiplication est %d \n",rep); V(calcul); wait(0); wait(0); return 0; }