Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[C] probleme execution thread en C

le pape, le vendredi 3 novembre 2006 à 16:13:39
salut tout le monde
j'ai besoin de votre aide pour m'aider a resoudre un petit probleme d'execution de mon programme en C-ANSI
ce programme permet de creer 2 thread et de les utiliser (rien de bien sorcier normalement).

je le compile sous linux (debian) en utilisant la commande
gcc -c thread1.c -o thread1 -lpthread

voila mon code:

#include <stdio.h>
#include <string.h>
#include <pthread.h>

void * traiteTh1(void *);
void * traiteTh2(void *);


int main()
{
int err, val, res;
pthread_t idThread[2];
char mess[1024], ret;
void * ptrRetVal;


printf("\nentrez une phrase : \n");
fgets(mess,1024,stdin);

printf("entrez une valeur : \n");
scanf("%d",& val);

err=pthread_create(& idThread[0], NULL, traiteTh1, (void *)& val);
if (err!=0)
{
perror("creation du thread 1 impossible");
exit(0);
}


err=pthread_create(& idThread[1], NULL, traiteTh2, (void *)& mess);
if (err!=0)
{
perror("creation du thread 2 impossible");
exit(0);
}

err=pthread_join(idThread[0], & ptrRetVal);
if (err!=0)
{
perror("join du thread 1 impossible");
exit(0);
}
res=* ((int *)ptrRetVal);
printf("TID du thread1: %u\n",idThread[0]);
printf("resultat retourne : %d\n", res);

err=pthread_join(idThread[1], ptrRetVal);
if (err!=0)
{
perror("join du thread 2 impossible");
exit(0);
}
printf("TID du thread2: %u\n",idThread[1]);
printf("%s\n", ptrRetVal);
}



void * traiteTh1(void * num)
{
int val, res;

printf("numero du TID du thread1: %u\n", pthread_self());
val=*((int *)num);
printf("valeur entrez : %d\n",val);
res=val*2;
pthread_exit((void *)& res);
}

void * traiteTh2(void * ch)
{
char * res={"message de thread2 : "},* mess;

mess=((char *) ch);
printf("numero du TID du thread2: %u\n", pthread_self());
printf("chaine de caracteres entree : %s\n",ch);

strcat(res,mess); /* mon PB est ici apparement*/

return((void *) res);
}





quand je l'execute dans le terminal il me dit:

entrez unz phrase :
salut
entrez une valeur :
12
numero du TID du thread1: 16386
valeur entrez : 12
numero du TID du thread2 : 32771
chaine de carractere entrree : salut

TID du thread1 : 16386
resultat retourne : 24
erreur de segmentation


je remercie d'avance toute personne essayant de m'aider et bonne chance
Répondre à le pape  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 le pape, le vendredi 3 novembre 2006 à 17:20:44
j'ai trouvé la solution sur un autre forum donc je vous passe cet solution au cas ou quelqu'un se retrouve avec le meme style de probleme.

remplacer :
char * res={"message de thread2 : "},* mess;
mess=((char *) ch);

Par ça :
char res[256]={"message de thread2 : "}, mess[128];
strcpy(mess,ch);
Répondre à le pape
[Vista] Afficher la commande Exécuter du menu Démarrer Afficher la commande "Exécuter" du menu Démarrer Lors de l'acquisition de votre nouveau système d'exploitation Vista, vous vous apercevrez que la commande "Exécuter", qui est assez coutumière et serviable chez son petit frère XP, n'existe... www.commentcamarche.net/faq/sujet-6987-vista-afficher-la-commande-executer-du-menu-demarrer
Commande "Exécuter" (Résolu) Bonjour, Dans mon menu "Démarrer", la commande "Exécuter" a disparu ! Comment la récupérer? Merci d'avance. www.commentcamarche.net/forum/affich-2047428-commande-executer
Envoyer un message par la commande executer (Résolu) bonjour, je voudrais envoyer un message sur un autre ordinateur via la commande executer, faut il faire: ping -adresse ip \\ et quoi d'autre??? merci de votre reponse www.commentcamarche.net/forum/affich-1966450-envoyer-un-message-par-la-commande-executer
Exécuter - Créer votre propre commandePour ceux qui aiment tout faire avec le clavier, il est possible de créer vos propres commandes exécutables dans Menu démarrer > Exécuter. Nous allons prendre l'exemple de la commande netnavig qui exécutera Mozilla FireFox. Ouvrez la base... www.commentcamarche.net/faq/sujet-11169-executer-creer-votre-propre-commande
Lancer des commandes en mode Administrateur sous VistaComme dans les versions précédentes de Windows, le champ "Exécuter" présent dans le menu Démarrer de Windows Vista, permet d'exécuter des commandes du système. Par défaut, ces commandes sont exécutées en utilisant les privilèges de... www.commentcamarche.net/faq/sujet-6569-lancer-des-commandes-en-mode-administrateur-sous-vista
Effacer l'historique de l'outil "Exécuter"Pour supprimer toutes les entrées contenues dans l'historique de la commande "Exécuter", il suffit d'éditer la base de registre et de supprimer certaines valeurs contenues dans la clé "RunMRU". Pour cela : Ouvrir l'éditeur du registre Le... www.commentcamarche.net/faq/sujet-103-effacer-l-historique-de-l-outil-executer
Problème avec la commande "executer" (Résolu)Bonjour à tous, J'ai un problème avec ma commande executer. Quand par exemple je tape ipconfig la fenettre apparait puis disparait de suite. Je ne peux rien voir. Merci d'avance pour vos réponses. www.commentcamarche.net/forum/affich-2914960-probleme-avec-la-commande-executer
Case "executer" absente sur cp (Résolu)bjr. on croit tt savoir mais... Ds la barre démarrer de xp (un vrai.) , la case "éxécuter" ne s'affiche pas. P/info, g 2 micros, et ds l'autre s'affiche .... Je voudrais éviter une réinstall de XP (un vrai). merci d conseils. Didier www.commentcamarche.net/forum/affich-3215850-case-executer-absente-sur-cp
Commade executer de windows (Résolu)Bonjour, J'ai un problème avec mon ordinateur.En effet j'avais été infecté par les virus et après néttoyage des virus avec kaspersky antivirus ma commande exécuter et la commande recherche ont disparu.J'ai ensuite fait une réparation... www.commentcamarche.net/forum/affich-3799970-commade-executer-de-windows
Télécharger Open In RegEditNormalement l'accès aux clés de registre, vous devez passer par le menu démarrer, de choisir "Exécuter" et d'entrer le mot clé "regedit" pour y accéder. A partir d'une page Web, il est plus complexe d'y avoir accès sauf si vous utilisez ce... www.commentcamarche.net/telecharger/telecharger-34056273-open-in-regedit