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

GTK+ avec C & C++ Discussion :

Des problemes avec ces threads <pthread.h>


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Des problemes avec ces threads <pthread.h>
    J'ai un petit probleme a vous poser,je suis newbie en C mais j'ai assez de connaissances en Java.
    Mais la pour ce que je veux faire,Java ne pouurrait pas assurer car ça frole la programmation systeme sous Linux.
    C'est un projet dans lequel je dois piloter un microcontroleur,plus de precisions....http://www.developpez.net/forums/viewtopic.php?t=217308

    Vous verrez bien que je dois faire du multithread et lire sur mon port serie.
    Le multithread en C,je suis encore plus newbie .Et c'est la que j'ai besoin de vous,chers erudits programmeurs.

    J'ai piqué un sample dans le livre"Programmation systeme C sous Linux" de Christophe Blaess.
    ca compile merveilleusement bien mais a l'edition des liens ca me pond deux erreurs:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Undefined reference pthread_create
    Undefined reference pthread_join
    Ce en quoi vous pouvez m'aider:
    -Si quelqu'un a deja eu un probleme du genre ou sait ce que cache ces messages en anglais....Un coup de main serait tres cool
    -Si quelqu'un est en mesure de me proposer d'autres facons de creer des threads avec d'autres librairies,je prends mais si en plus il me filer des urls pour des samples il serait pour moi un bon samaritain

    En gros c'est ca mes problemes....Merci pour vos reponses

  2. #2
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Salut,

    Essaye de rajouter -lpthread quand tu fais le link.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    justement je l'ai fait...et je l'ai d'ailleurs ajouté a mon makefile....
    Je ne pige pas... .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o -lpthread nom_exe nom_ob
    et c'est la justement qu'il persiste a crier ERREUR!!!!!

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par nasamad
    justement je l'ai fait...et je l'ai d'ailleurs ajouté a mon makefile....
    Je ne pige pas... .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o -lpthread nom_exe nom_ob
    et c'est la justement qu'il persiste a crier ERREUR!!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o nom_exe -lpthread nom_ob -Wall -W -pedantic-errors
    Les options à la fin sont des options qui devraient toujours être utilisées.

    Dans ton cas l'arguement après le -o est le nom de l'exe donc -lpthread ...

    Il faut faire attention à l'ordre des arguments !

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Je vais essayer ta commande a la piaule,je te dirais ce qu'il en est demain.La je suis en ville dans un cyber.
    Merci

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par nasamad
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....
    pthread est une librairie très solide et fiable, par contre non portable.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci mais s'il y a d'autres methodes,je veux bien savoir,pas forcement dans l'ordre de mon projet mais pour savoir combien de cordes je peux avoir a mon arc.Et la portabilité ,c'est pas ce que je recherche.......
    ,tres sympa...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par nasamad
    Merci mais s'il y a d'autres methodes,je veux bien savoir,pas forcement dans l'ordre de mon projet mais pour savoir combien de cordes je peux avoir a mon arc.Et la portabilité ,c'est pas ce que je recherche.......
    ,tres sympa...
    En librairie C je n'en connais pas d'autres sous linux. Et si la portabilité ne t'interresses pas alors aucune raison d'en utiliser une autre. La seule raison qui puisse en faire utiliser une autre c'est la portabilité. Par exemple les Gtk t'offrent une surcouche pour les threads ce qui fais que lorsque tu utilise une fonction (fictive) gtk_create_thread() quand tu compiles ton code sous linux c'est les pthread qui sont utiliser mais sous windows c'est l'api windows qui est utilisée (et ton source reste portable comme ca)

  10. #10
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Salut,

    Pour les thread de manière portable, il y a la glib qui est pas mal :
    http://developer.gnome.org/doc/API/2...b-Threads.html

    Bonne journée

    T.
    Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci. j'ai compris.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Merci de marquer le sujet comme [RESOLU] (bouton en bas à gauche) si celui-ci l'est effectivement.

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Yabo
    Citation Envoyé par nasamad
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....
    pthread est une librairie très solide et fiable, par contre non portable.
    !!!

    Ce qui ne faut pas lire...

    c'est compliant POSIX. c'est portable.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par Gandalf
    Citation Envoyé par Yabo
    Citation Envoyé par nasamad
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....
    pthread est une librairie très solide et fiable, par contre non portable.
    !!!

    Ce qui ne faut pas lire...

    c'est compliant POSIX. c'est portable.
    Sous windows ? (si oui alors excuse moi mais j'ai jamais vu la version windows )

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Yabo
    Citation Envoyé par nasamad
    justement je l'ai fait...et je l'ai d'ailleurs ajouté a mon makefile....
    Je ne pige pas... .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o -lpthread nom_exe nom_ob
    et c'est la justement qu'il persiste a crier ERREUR!!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o nom_exe -lpthread nom_ob -Wall -W -pedantic-errors
    Les options à la fin sont des options qui devraient toujours être utilisées.

    Dans ton cas l'arguement après le -o est le nom de l'exe donc -lpthread ...

    Il faut faire attention à l'ordre des arguments !
    -lpthread doit toujours se trouver apres les noms des fichiers objets (.o ou .obj) comme toutes les bibliotheques...

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Yabo
    Citation Envoyé par Gandalf
    Citation Envoyé par Yabo
    Citation Envoyé par nasamad
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....
    pthread est une librairie très solide et fiable, par contre non portable.
    !!!

    Ce qui ne faut pas lire...

    c'est compliant POSIX. c'est portable.
    Sous windows ? (si oui alors excuse moi mais j'ai jamais vu la version windows )
    1- portable ne signifie pas portable vers windows...
    2- Oui il y a une implémentation de pthread pour WIN32...
    je crois qu'on peut la trouver sur le site red-Hat ou de Cygwin...
    mais c'est bien une implementation WIN32.

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par Gandalf
    1- portable ne signifie pas portable vers windows...
    2- Oui il y a une implémentation de pthread pour WIN32...
    je crois qu'on peut la trouver sur le site red-Hat ou de Cygwin...
    mais c'est bien une implementation WIN32.
    1 - Certes mais portables entre les différents UNIX c'est relativement souvent le cas donc lorsqu'on parle de portable souvent on parle de la portabilité entre les 2 systèmes les plus répandus : UNIX & Winwdows. Sinon je suis tout a fait d'accord

    2 - Je ne savais pas désolé (par contre ca m'arrange fichtrement bien !). Je te remercie pour l'info (nul n'est infaillible ).

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Yabo
    Citation Envoyé par Gandalf
    1- portable ne signifie pas portable vers windows...
    2- Oui il y a une implémentation de pthread pour WIN32...
    je crois qu'on peut la trouver sur le site red-Hat ou de Cygwin...
    mais c'est bien une implementation WIN32.
    1 - Certes mais portables entre les différents UNIX c'est relativement souvent le cas donc lorsqu'on parle de portable souvent on parle de la portabilité entre les 2 systèmes les plus répandus : UNIX & Winwdows. Sinon je suis tout a fait d'accord

    2 - Je ne savais pas désolé (par contre ca m'arrange fichtrement bien !). Je te remercie pour l'info (nul n'est infaillible ).
    Solaris 2 a sa propre lib de threading ET pthread par exemple...

    evidement la lib de Solaris n'est portable que d'une version de Solaris à une autre (et encore...)

  19. #19
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut threads qui va se répéter
    Merci à tous . je m'en suis bien tiré.
    Mais j'ai un pbleme 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <termios.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    void *port_seri (void * inutile)
    	{  	int             fd;
    		int		i;
    		int*		t;
    		FILE* 		fp;	
    		/* Ouverture de la liaison serie */
    	if ( (fd=open("/dev/ttyS1",O_RDWR)) == -1 ) {
    		perror("open");
    		exit(-1);
    	}
     
    	/* Lecture des parametres courants */
    	tcgetattr(fd,&termios_p);
    	/* On ignore les BREAK et les caracteres avec erreurs de 
                                 parité     */
    	termios_p.c_iflag = IGNBRK | IGNPAR;
    	/* Pas de mode de sortie particulier */
    	termios_p.c_oflag = 0;
    	/*utiLiaison a 9600 bps avec 7 bits de donnees et une parite 
                        paire */
    	termios_p.c_cflag = B9600 | CS7 | PARENB;
    	/* Mode non-canonique avec echo */
    	termios_p.c_lflag = ECHO;
    	/* Caracteres immediatement disponibles */
    	termios_p.c_cc[VMIN] = 1;
    	termios_p.c_cc[VTIME] = 0;
    	/* Sauvegarde des nouveaux parametres */
    	tcsetattr(fd,TCSANOW,&termios_p);
     
    	//On va ouvrir le fichier à envoyer au port série.
    	if ((fp = fopen ("/home/nasamad/monfichier.txt", "r+")) ==    		NULL) {
                                                  perror ("");	
    	}/* Attention!!! je compte remplacer ce bloc par un fread   
                                  (fd,buffer,taille)
    	et ensuite envoyer ce buffer sur le port série." Voir suite"*/
    	 else {while (( i = getc (fp)) != EOF)	 
    		 {
    			t = (int*)i;  		
    			 write (fd, t, 1);		
    		 }	  
    	      }	/* C'est ici la fin du bloc que je dois remplacer 
    		car je me demande si j'aurais ce que je souhaite vraiment*/	
    			close(fd);		
    			fclose (fp);	
            pthread_exit ((void *) t);
    	}	
    int main (void) 
    {	
    	int      t;	
    	int       ret;	
    	pthread_t thread;	
    	void *    retour;
    	if ((ret = pthread_create (& thread, NULL, port_seri, NULL)) != 0) 
    	{		fprintf (stderr, "%s\n",strerror (ret));
    			exit (1);	
    	}	
    pthread_join (thread , & retour);	
    if (retour!= PTHREAD_CANCELED)
     {		t = (int) retour;		
    		fprintf (stdout, "main : valeur lue = %d\n", t);	
     }
    	return (0);
    }/*§§§§FIN DU PROGRAMME§§§§§§§
    Cà compile bien mais à l'exécution errur Mais là je suis entrain de revoir en mettant des printf pour voir là ou ca deconne. je profite pour dire merci à Yabo.

  20. #20
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 8
    Points
    8
    Par défaut trhead synchronise
    Le programme doit au faire lire un fichier ;le mettre dans un buffer et l'envoyer sur le port série serie.
    SVP : je dois creer un thread parmi tant d'autres qui doit lire sur le port série à une certaine fréquence pour me synchroniser par rapport à un micontoleur qui m'envoie les données à une certaine fréquence et envoyer les donner dans une file d'attente. Tout doc pouvant m'aider...toute proposisition... seront les bienvenus.. Merci de m'aider sur ce coup. C'est d'ailleurs ca mon problème. C'est pour un projet. MERCI.je concois un interface graphique pour superviser les tçaches d'un microcontroleur.blablabla. l'interface je l'ai réalisé en Java.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Linux à des problèmes avec les brevets
    Par bilb0t dans le forum Linux
    Réponses: 15
    Dernier message: 21/11/2006, 13h54
  2. Probleme avec les threads
    Par Orahn dans le forum MFC
    Réponses: 5
    Dernier message: 04/11/2005, 10h14
  3. Que des problèmes avec vi
    Par meufeu dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 20/07/2004, 16h48
  4. toujours des problemes avec ce DROP
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/02/2004, 08h43

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