Public feed #721851

Anonymous

public text v1 · immutable
Raw Edit
·published 2007-10-01 16:16 UTC
rendered paste body
#define _REENTRANT
#include <pthread.h>

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>

pthread_t *threads;

char **argv;

void *funkcja(void *wsk){ // do funkcji jest potrzebny tylko argv !


        int n=(int)wsk;
        int index;
        int znak;
        int ilosc=0;
        FILE * plik=fopen(argv[n-1], "r");
        printf("Watek nr %d przyszedl na swiat\n",n);
        while(znak=fgetc(plik) != EOF){
                if(znak==10)
                        ilosc++;
                }
        printf("Plik %s ma %d linii\n",argv[n-1],ilosc);

         pthread_exit(NULL);


}




int main(int argc, char **argv){

        // wczytalem pliki, argc to ilosc plikow, argv zawiera ich nazwy
        //
        int i;
        threads=(pthread_t *)malloc(sizeof(int)*argc);
        for(i=1; i < argc ; i++){
                if((pthread_create((threads+i),NULL,funkcja,(void*)(i+1)))!=0){
                        printf("Blad przy pthread_create");
                        return -1;
                }

        }
        for(i=1; i < argc; i++){
                pthread_join(threads[i],NULL);
        }



}