2
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
pthread_mutex_t mut1 = PTHREAD_MUTEX_INITIALIZER,
mut2 = PTHREAD_MUTEX_INITIALIZER,
mut3 = PTHREAD_MUTEX_INITIALIZER,
mut4 = PTHREAD_MUTEX_INITIALIZER;
char *buff1, *buff2, *buff3, *buff4;
void *stage1(void *arg)
{
DIR *dir = (DIR*)arg
struct dirent *ent;
if (dir != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
printf ("%s\n", ent->d_name);
}
closedir (dir);
} else
{
printf("FAILURE");
}
}
int main(int argc, char *argv[])
{
if(argc != 6)
{
printf("Usage: %s <buffsize> <filesize> <uid> <gid> <string>\n", argv[0]);
return(-1);
}
int buffsize, filesize, uid, gid;
sscanf(argv[1],"%d",&buffsize);
sscanf(argv[2],"%d",&filesize);
sscanf(argv[3],"%d",&uid);
sscanf(argv[4],"%d",&gid);
char *string = argv[5];
buff1 = malloc(buffsize * sizeof(*buff1));
buff2 = malloc(buffsize * sizeof(*buff2));
buff3 = malloc(buffsize * sizeof(*buff3));
buff4 = malloc(buffsize * sizeof(*buff4));
pthread_t th1,th2,th3,th4,th5;
DIR *dir = opendir(".");
pthread_create(&th1,NULL,stage1,dir);
if(filesize != -1) pthread_create(&th2,NULL,stage2,buff2);
return 0;
}
這似乎在調試器中正常工作,但是當我運行它時終端上沒有顯示任何內容。我將與被更換的printf線在階段1方法:如何將當前目錄中的所有文件從c中的線程添加到數組?
buff1[i] = ent;
i++;
我會添加更多的代碼,以確保我總是指向正確的位置,但是這就是我現在有工作。我希望它能打印文件,所以我知道它的工作原理。
感謝我覺得自己很蠢,現在增加了一個緩衝不會如我所料的文件,但我的時間不多了,所以我不打算理會花費大量時間在它上面 – Chris