Public feed
#721851
#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);
}
}