#1 Le 10/02/2006, à 16:51
- Xtatic
Un coup de main sur un petit programme ?
Bonjour,
J'ai testé un programme utilisant des threads sur mon portable mais je n'obtiens pas le résultats escompté. Si quelqu'un sous Ubuntu voudrait bien le compiler et l'essayter, je lui en serait trés reconnaissant
Voila mon programme (qui fonctionne sous KDE) :
#include<stdio.h>
#include<pthread.h>
#include <semaphore.h>
#include<unistd.h>
#define MAX 100
sem_t mutex, vide, plein;
char tampon[MAX];
pthread_t tid[2];
void* proc(void* i);
int main()
{
int i;
sem_init(&mutex, 0, 1);
sem_init(&vide, 0, MAX);
sem_init(&plein, 0, 0);
for(i = 0; i<2; i++)
pthread_create(tid + i , NULL , (void*(*)())proc, (void *)i);
pthread_join(tid[0], (void *)i);
pthread_join(tid[1], (void *)i);
return 0;
}
void* proc(void* i)
{
int rep;
int posLecteur, posEcrivain;
posLecteur = 0;
posEcrivain = 0;
if(i==0) { // Lecteur
do{
sem_wait(&plein);
sem_wait(&mutex);
rep = write(STDOUT_FILENO, &tampon[posLecteur], 1);
posLecteur = (posLecteur + 1) % MAX;
sem_post(&mutex);
sem_post(&vide);
}while(rep != 0);
}else{ //Ecrivain
do{
sem_wait(&vide);
sem_wait(&mutex);
rep = read(STDIN_FILENO, &tampon[posEcrivain], 1);
posEcrivain = (posEcrivain + 1) % MAX;
sem_post(&mutex);
sem_post(&plein);
}while(rep!=0);
}
return NULL;
}
Normalement , une fois executé, lorsqu'on tape des caractères, ceux ci doivent etre réenvoyé à l'écran.
Mais lorsque je le compile sur mon portable (sous ubuntu) rien n'est renvoyé.
Pour compiler, je tape : gcc -lpthread -o executable le_nom_du_fichier_source.c
et avec un -Wall, je n'obtiens aucun warnings.
Je crains que le paquets build essential et ses dépendances que j'ai téléchargés ne sont pas entièrements bon (j'ai telechargé des paquets pour une distrib debian, et non spécifiquement ubuntu) .
Merci de l'aide que vous pourrez m'apporter.
Dernière modification par Xtatic (Le 10/02/2006, à 16:58)
Hors ligne
#2 Le 10/02/2006, à 22:44
- Sacre
Re : Un coup de main sur un petit programme ?
Je l'ai compilé sur ma Ubuntu (avec les build-essential d'Ubuntu et gcc 4)
Quand je tappe des caractères, ils sont effectivement affiché dans ma console. Donc ton programme à l'air de fonctionner
Hors ligne
#3 Le 10/02/2006, à 23:35
- Xtatic
Re : Un coup de main sur un petit programme ?
Merci.
Bon, et bien je vais recommencer les telechargements des paquets
Je verrai bien ce qui se passera
Hors ligne