Pthreads de la compilation ne fonctionne pas

J'ai écrit un code mais il ne semble pas fonctionner quand je compile il. Je suis en train de lancer ce dans Ubuntu:

#include <pthread.h>
#include <ctype.h>
#include <unistd.h>

char buffer[128];

void *write_thread(void *args)
{
    int count = *((int*)args);
    write(STDOUT_FILENO, buffer, count);

    pthread_exit(0);
}

void *toupper_thread(void *args)
{
    int i;
    int count = *((int*)args);
    for(i = 0; i < count; i++) {
        buffer[i] = toupper(buffer[i]);
    }

    pthread_t writeId;
    pthread_create(&writeId, NULL, write_thread, &count);

    pthread_join(writeId, NULL);
    pthread_exit(0);
}

void *read_thread(void *args)
{
    int count = read(STDIN_FILENO, buffer, 128);
    pthread_t toupperId;
    pthread_create(&toupperId, NULL, toupper_thread, &count);

    pthread_join(toupperId, NULL);
    //buffer[count] = 0;

    pthread_exit(0);

}

int main()
{
    pthread_t threadId;
    pthread_create(&threadId, NULL, read_thread, NULL);

    pthread_join(threadId, NULL);
}

et j'obtiens ces erreurs lorsque j'essaye de le compiler avec gcc -pthread prob41.c ou avec gcc prob41.c -lpthread:

   prob41.c:1:21: error: pthread.h: No such file or directory
   prob41.c: In function toupper_thread’:
   prob41.c:23: error: pthread_t undeclared (first use in this function)
   prob41.c:23: error: (Each undeclared identifier is reported only once
   prob41.c:23: error: for each function it appears in.)
   prob41.c:23: error: expected ‘;’ before writeId
   prob41.c:24: error: writeId undeclared (first use in this function)
   prob41.c: In function read_thread’:
   prob41.c:33: error: pthread_t undeclared (first use in this function)
   prob41.c:33: error: expected ‘;’ before toupperId
   prob41.c:34: error: toupperId undeclared (first use in this function)
   prob41.c: In function main’:
   prob41.c:45: error: pthread_t undeclared (first use in this function)
   prob41.c:45: error: expected ‘;’ before threadId
   prob41.c:46: error: threadId undeclared (first use in this function)

Je ne sais pas ce que je fais mal.

  • Avez-vous libc6-dev installé?
InformationsquelleAutor Lara | 2012-02-06