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:
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 :lol:
-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 ;)
threads qui va se répéter
Merci à tous . je m'en suis bien tiré.
Mais j'ai un pbleme avec ce code
Code:
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.