#define _REENTRANT #include #include #include #include #include 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); } }