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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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 �prouv� Avatar de alexrtz
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par d�faut
    Salut,

    Essaye de rajouter -lpthread quand tu fais le link.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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 tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Par d�faut
    Je reste ouvert a toute autre proposition....Une autre methode de creation de thread ou/et consor.....

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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 tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    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 chevronn� Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    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.

  11. #11
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Par d�faut
    Merci. j'ai compris.

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

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

  13. #13
    Membre exp�riment�
    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
    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 tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    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 exp�riment�
    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
    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 exp�riment�
    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
    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 tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    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 exp�riment�
    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
    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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    17
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    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