Я хочу пройти через файловую систему, используя потоки и процессы. Моя программа должна предположить, что первый параметр задан как «-p», который предлагает многопроцессорное приложение, или «-t», который выполняется врезьбовой путь.Второй параметр - это путь к файлу или каталогу.Если моя программа получает путь к файлу, она должна распечатать размер файла в байтах.Если моя программа получает путь к каталогу, она должна таким же образом распечатать имя каталога, а затем обработать все записи в каталоге, кроме самого каталога и родительского каталога.Если моей программе присвоен каталог, она должна отображать всю иерархию с корнем в указанном каталоге.Я написал что-то, но я застрял в. Я не могу улучшить свой код. Пожалуйста, помогите мне.
Мой код выглядит следующим образом:
include
include
включают
включают
включают
включают
включают
int funcThread (DIR * D);
int main (int argc, char * argv []) {нить pthread_t [100];DIR * dirPointer;struct stat object_file;struct dirent * object_dir;int counter;
if(opendir(argv[1])==NULL)
{
printf("\n\nERROR !\n\n Please enter -p or -t \n\n");
return 0;
}
if((dirPointer=opendir(argv[1]))=="-t")
{
if ((object_dir = opendir(argv[2])) == NULL)
{
printf("\n\nERROR !\n\nPlease enter the third argument\n\n");
return 0;.
}
else
{
counter=0;
while ((object_dir = readdir(object_dir)) != NULL)
{
pthread_create(&thread[counter],NULL,funcThread,(void *) object_dir);
counter++;
}
}
}
return 0;}
int funcThread (DIR * dPtr) {DIR * ptr;struct stat oFile;struct dirent * oDir;int num;
if(ptr=readdir(dPtr)==NULL)
rewinddir(ptr);
if(S_ISDIR(oFile.st_mode))
{
ptr=readdir(dPtr);
printf("\t%s\n",ptr);
return funcThread(ptr);
}
else
{
while(ptr=readdir(dPtr)!=NULL)
{
printf("\n%s\n",oDir->d_name);
stat(oDir->d_name,&oFile);
printf("\n%f\n",oFile.st_size);
}
rewinddir(ptr);
}
}