文件名称:mydu.tar
-
所属分类:
- 标签属性:
- 上传时间:2012-11-16
-
文件大小:721byte
-
已下载:0次
-
提 供 者:
-
相关连接:无下载说明:别用迅雷下载,失败请重下,重下不扣分!
介绍说明--下载内容来自于网络,使用问题请自行百度
unix du命令的简单实现,主要可以学习glob函数的使用-static int64_t
mydu_getblocks(const char*path)
{
int i
int64_t sum=0
static struct stat stat_result
glob_t glob_result
static int ret
static char fullpath[PATHMAX]
if (lstat(path, &stat_result)<0) {
perror("lstat()")
return 0
}
if (!S_ISDIR(stat_result.st_mode)) {
return stat_result.st_blocks
}
/************************************************/
snprintf(fullpath, PATHMAX, " s/*", path)
ret = glob(fullpath, GLOB_NOCHECK|GLOB_NOSORT, NULL, &glob_result)
if (ret!=0) {
perror("glob()")
return 0
}
snprintf(fullpath, PATHMAX, " s/.*", path)
ret = glob(fullpath, GLOB_NOCHECK|GLOB_NOSORT|GLOB_APPEND, NULL, &glob_result)
if (ret!=0) {
perror("glob()")
return 0
}
sum+= stat_result.st_blocks
for (i=0 i<glob_result.gl_pathc ++i) {
if (isvalid(glob_result.gl_pathv[i])) {
sum+= mydu_getblocks(glob_result.gl_pathv[i])
}
}
globfree(&glob_result)
return sum
}
mydu_getblocks(const char*path)
{
int i
int64_t sum=0
static struct stat stat_result
glob_t glob_result
static int ret
static char fullpath[PATHMAX]
if (lstat(path, &stat_result)<0) {
perror("lstat()")
return 0
}
if (!S_ISDIR(stat_result.st_mode)) {
return stat_result.st_blocks
}
/************************************************/
snprintf(fullpath, PATHMAX, " s/*", path)
ret = glob(fullpath, GLOB_NOCHECK|GLOB_NOSORT, NULL, &glob_result)
if (ret!=0) {
perror("glob()")
return 0
}
snprintf(fullpath, PATHMAX, " s/.*", path)
ret = glob(fullpath, GLOB_NOCHECK|GLOB_NOSORT|GLOB_APPEND, NULL, &glob_result)
if (ret!=0) {
perror("glob()")
return 0
}
sum+= stat_result.st_blocks
for (i=0 i<glob_result.gl_pathc ++i) {
if (isvalid(glob_result.gl_pathv[i])) {
sum+= mydu_getblocks(glob_result.gl_pathv[i])
}
}
globfree(&glob_result)
return sum
}
(系统自动生成,下载前可以参看下载内容)
下载文件列表
mydu.c
本网站为编程资源及源代码搜集、介绍的搜索网站,版权归原作者所有! 粤ICP备11031372号
1999-2046 搜珍网 All Rights Reserved.