Rechercher : dans
Par :

Pthrread programming on linux

Dernière réponse le 19 fév 2008 à 09:24:28 essome, le 15 jui 2004 à 10:51:05 
 Signaler ce message aux modérateurs

Bonjour à tous!
Voici un problème qui me rend dingue.
Je dois utiliser des threads dans mon programme, mais au premier essai de l'utilisation de thread, un fiasco. ça ne compile même pas.
Voici mon code:
#include <pthread.h>
#include "errors.h"

typedef struct alarm_tag {
int seconds;
char message[64];
} alarm_t;

void *alarm_thread (void *arg)
{
alarm_t *alarm = (alarm_t*)arg;
int status;

status = pthread_detach (pthread_self ());
if (status != 0)
err_abort (status, "Detach thread");
sleep (alarm->seconds);
printf ("(%d) %s\n", alarm->seconds, alarm->message);
free (alarm);
return NULL;
}
int main (int argc, char *argv[])
{
int status;
char line[128];
alarm_t *alarm;
pthread_t thread;

while (1) {
printf ("Alarm> ");
if (fgets (line, sizeof (line), stdin) == NULL) exit (0);
if (strlen (line) <= 1) continue;
alarm = (alarm_t*)malloc (sizeof (alarm_t));
if (alarm == NULL)
errno_abort ("Allocate alarm");

/*
* Parse input line into seconds (%d) and a message
* (%64[^\n]), consisting of up to 64 characters
* separated from the seconds by whitespace.
*/
if (sscanf (line, "%d %64[^\n]",
&alarm->seconds, alarm->message) < 2) {
fprintf (stderr, "Bad command\n");
free (alarm);
} else {
status = pthread_create (
&thread, NULL, alarm_thread, alarm);
if (status != 0)
err_abort (status, "Create alarm thread");
}
}
}

N.B: sur linux, le compilateur gcc
et error.h est un fichier pr la gestion des erreurs
l'erreur est: "undefined reference to 'pthread_detach'
"undefined reference to 'pthread_create'

Take care of You!

Meilleures réponses pour « Pthrread programming on linux » dans :
L'arborescence du système de fichiers de Linux VoirLinux possède de nombreux répertoires, et ils ont chacun leur rôle. (Note: D'une distribution à l'autre, ces répertoires peuvent être différents.) Sous Windows, un fichier est un fichier. Sous Linux, un fichier peut représenter: un fichier, un...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
[Cygwin] Désinstaller CygWin VoirCygWin est un environnement d'émulation Linux qui permet d'avoir un shell et de compiler et exécuter les programmes Linux (On dispose ainsi de gcc, apache, bash, etc.). CygWin ne possède pas de déinstalleur intégré, mais ce logiciel étant propre,...
Linux - L'installation de logiciels VoirLes différents types d'archives Basiquement il existe plusieurs façons de récupérer une application fonctionnant sous Linux : Sous forme de paquetage RPM. Il s'agit d'un fichier portant l'extension .rpm permettant une installation automatique,...
Introduction à Linux VoirHistorique et génèse de Linux Linus B.Torvalds est à l'origine de ce système d'exploitation entièrement libre. Au début des années 90, il voulait mettre au point son propre système d'exploitation pour son projet de fin d'étude. Linus Torvalds...

1

rucht, le 15 jui 2004 à 14:40:53
  • +1

Je repond pour aider mais il semble que tu sache mieux programer que moi !!

je vais te dire la meme chose que dire mes prof : "lit les insulte du compilateur ! "
visiblement il ne reconnait pas 'pthread_detach' a tu fait tout les include ?
et tu sur de ne pas avoir fait de faute quand tu l' a ecrit ?

c 'est a peu pres tout ce que je peux te dire mais une chose est sure ecoute ce que ma dit mon prof ma (persque ... ) toujour permi de trouver mes erreur !

rucht ( qui ecoute ces profs ... )

Répondre à rucht

2

damien, le 15 jui 2004 à 15:41:47

Bonjour,

Ca ne compile ps ou bien c'est l'edition de lien qui pose probleme ;-)
Quelles option passes-tu à gcc? => un oubli de -lpthread peut-etre
A+
Damien

Répondre à damien

3

 groskouik, le 19 fév 2008 à 09:24:28

Rajoute -lpthread a la fin de ta ligne de compilation.

Répondre à groskouik