Problème avec multi threading en c sous linux
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème avec multi threading en c sous linux



  1. #1
    invite6ae216d1

    Exclamation Problème avec multi threading en c sous linux


    ------

    Bonjour,

    je veux écrire un programme qui va assurer la communication entre deux pc via le port série par exemple.
    ci-dessous la liste des fonctions relatives au port série :

    Code:
    void ClosePort()   
    int OpenPort()
    int WritePort(char* Output)
    int ReadPort(char* Response, int lengMax)
    Ces fonctions sont fonctionnelles et un petit programme de test vérifie ça.
    Moi je veux écrire deux threads une responsable à la réception via le port série et l'autre responsable à l'émission via le port série.Ces deux threads vont etre exécuté en parallèle.
    Pour cela j'ai écrit le code suivant:

    Code:
    void *myread (void * arg)
        {
        char *data_out;
        int i,d;
        char data_in[254];
        while (1)
            {
            printf(">");
            getline(&data_out,&d,stdin);
            if(strcmp(data_out,"exit"))  pthread_exit (0);
            WritePort(data_out) ;
            }
        pthread_exit (0);
        }
    
    void *mywrite (void * arg)
        {
        while (1)
           {
           ReadPort(data_in,254) ;
           printf("*** %s\n", data_in);
        }
        pthread_exit (0);
    }
    
    void main ()
        {
        pthread_t th1,th2;
        void *ret;
        OpenPort();
        pthread_create (&th1, NULL, myread, "1") ;
        pthread_create (&th2, NULL, mywrite, "2") ;
        (void)pthread_join (th1, &ret);
        (void)pthread_join (th2, &ret);
        }
    Le programme est compilé mais lorsque je l'exécute il m'affiche "Segmentation default". Je sais pas si la cause de ce message est débile ou non mais j'ai pas trouvé où est le problème.
    J'ai besoin de votre aide pour terminer mon programme.
    Merci d'avance

    -----

  2. #2
    invite6ae216d1

    Exclamation Re : Problème avec multi threading en c sous linux

    pardon, il ya quelques fautes de frappes .
    le message est "Segmentation fault".
    la déclaration dela variabe dat_in se trouve dans la fonction mywrite .

    juste des fautes de frappes lors de la saisie du message.
    merci

  3. #3
    Jack
    Modérateur

    Re : Problème avec multi threading en c sous linux

    La première chose à faire est de déterminer quelle est l'instruction en cause. Les debugger sont pourtant faits pour çà.

    Sinon, tu fais un getligne vers un buffer pointé par data_out.
    1) aucune mémoire n'est allouée pour ce buffer
    2)tu passes l'adresse de data_out qui est un pointeur, donc qui est déjà l'adresse du buffer.

    Ça ne peut donc pas fonctionner en l'état.

    A+

  4. #4
    polo974

    Re : Problème avec multi threading en c sous linux

    man getline:
    DESCRIPTION
    getline() reads an entire line from stream, storing the address of the
    buffer containing the text into *lineptr. The buffer is null-termi‐
    nated and includes the newline character, if one was found.

    If *lineptr is NULL, then getline() will allocate a buffer for storing
    the line, which should be freed by the user program. (The value in *n
    is ignored.)

    Alternatively, before calling getline(), *lineptr can contain a pointer
    to a malloc(3)-allocated buffer *n bytes in size.
    If the buffer is not
    large enough to hold the line, getline() resizes it with realloc(3),
    updating *lineptr and *n as necessary.
    En C, un pointeur, c'est comme un flingue chargé, armé, s'il pointe vers la foule et qu'on s'en sert, ça fait mal...
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Problême de wi-fi sous linux
    Par invitee8a20d29 dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 23/06/2009, 15h58
  2. VNC multi-écrans sous linux
    Par invited5095748 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 21/06/2009, 12h45
  3. Probleme avec la connection USB avec PC sous linux !! !
    Par invite36d52cc8 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 12/12/2008, 22h45
  4. probleme sous linux
    Par croco01 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/07/2008, 22h54
  5. Petit problème sous linux
    Par invitee6dbc8ad dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 19/11/2006, 17h08