使用C for unix使用线程根据给定根位置遍历文件系统
我想使用线程和进程在文件系统内部进行遍历。我的程序必须假设第一个参数是“-p”,它提供了一个多进程应用程序,或者“-t”以多线程方式运行。第二个参数是 文件或目录的路径名。如果我的程序得到一个文件的路径,它应该以字节为单位打印出文件的大小。如果我的程序得到一个目录的路径,它应该以同样的方式打印出目录名,然后处理目录中的所有条目 除目录本身和父目录之外的目录。如果给我的程序一个目录,它必须显示根在指定目录下的整个层次结构。我写了一些东西,但我陷入了困境。我无法改进我的代码。请帮助我 我的代码如下: 包括 包括 包括 包括 包括 包括 包括 int funcThread(DIR*D) int main(int argc,char*argv[]) { pthread_t thread[100]; DIR*dirPointer; 结构统计对象_文件; 结构方向*对象方向; 整数计数器使用C for unix使用线程根据给定根位置遍历文件系统,c,multithreading,unix,multiprocessing,C,Multithreading,Unix,Multiprocessing,我想使用线程和进程在文件系统内部进行遍历。我的程序必须假设第一个参数是“-p”,它提供了一个多进程应用程序,或者“-t”以多线程方式运行。第二个参数是 文件或目录的路径名。如果我的程序得到一个文件的路径,它应该以字节为单位打印出文件的大小。如果我的程序得到一个目录的路径,它应该以同样的方式打印出目录名,然后处理目录中的所有条目 除目录本身和父目录之外的目录。如果给我的程序一个目录,它必须显示根在指定目录下的整个层次结构。我写了一些东西,但我陷入了困境。我无法改进我的代码。请帮助我 我的代码如下:
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++;
}
}
}
返回0;
}
int funcThread(DIR*dPtr)
{
DIR*ptr;
结构统计文件;
结构方向*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);
}
}这一行:
if((dirPointer=opendir(argv[1]))=="-t")
dirPointer是一个指针DIR*,那么它怎么能等于文本字符串指针呢?我发现了一些错误:
if(ptr=readdir(dPtr)==NULL){}
=
运算符的优先级低于=
[此错误重复几次]