实现功能
在Linux系统中创建一个子进程,要求子进程对一个目录中的子目录或者文件进行数量统计(不计隐藏文件),并汇报给父进程,父进程等待子进程运行结束后,将子进程所得结果进行输出.
源代码如下
#include <unistd.h>
#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
int sum = 0;
if(argc < 2)
{
printf("Usage : %s <directory>\n",argv[0]);
return -1;
}
DIR* dir = opendir(argv[1]);
if(!dir)
{
perror("opendir") ;
return -1;
}
struct dirent* p = {
0};
pid_t pid = fork();
if(pid < 0)
{
perror("fork");
closedir(dir);
return -1;
}
if(pid == 0)
{
while(p = readdir(dir))
{
if(!strncmp(p->d_name,".",1)) continue;
sum++;
}
closedir(dir);
exit(sum);
}
else
{
int res;
wait(&res);
printf("%s 下有文件及子目录的数量是:%d \n",
argv[1],WEXITSTATUS(res));
}
closedir(dir);
return 0;
}
实验结果
