Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

thread sous unix


migutz

Messages recommandés

Bonjour, je suis débutant en programmation système sous unix, et j'essaye de me familiariser avec les threads, cependant j'ai toujours un problème à la compilation:

 

voici mon code (pour essayer):

 

include <pthread.h>

#include<stdio.h>

#include<stdlib.h>

 

 

 

void *My_process(void *arg)

{

int dI;

for(dI=0;dI<5;dI++)

{

printf("\nThread %s: %d\n",(char*)arg,dI);

sleep(1);

}

pthread_exit(0);

 

}

 

 

main(int ac,char **av)

{

 

pthread_t th1,th2;

void * ret;

 

if(pthread_create(&th1,NULL,My_process,"1")<0)

{

printf("\nThread error");

exit(1);

}

if(pthread_create(&th2,NULL,My_process,"1")<0)

{

printf("\nThread error");

exit(1);

}

(void)pthread_join(th1,&ret);

(void)pthread_join(th2,&ret);

 

}

j'ai un message : undefined reference to pthread_create.

 

J'utilise mandrake 9.1, comment puis je faire pour faire fonctionner ce petit programme?

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Voilà, c'était donc un message du linker...

 

En fait, l'include ne sert qu'à la compilation, à savoir quels sont les prototypes des fonctions que tu utilises (histoire que tu ne joues pas avec des fonctions inconnues, et que tu ne te gourres pas lors de leur utilisation - les bons nombres/types de paramètres, le bon type de retour, etc. etc.), mais une fois que tu as compilé ton .c en .o les références à ces fonctions ne sont pas "résolues" et si tu ne précises pas qu'il faut utiliser telle ou telle librairie (ou "tel autre fichier .o" puisque tu peux utiliser plusieurs .o pour faire un seul exécutable, et que c'est le même principe) au linkage, il ne retrouve pas les symboles correspondant à ces fonctions, donc ne peut pas créer un exécutable (il lui manque des références)...

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...