文件名称:mydu.tar
- 所属分类:
- Linux/Unix编程
- 资源属性:
- [Linux] [C/C++] [源码]
- 上传时间:
- 2012-11-26
- 文件大小:
- 1kb
- 下载次数:
- 0次
- 提 供 者:
- aa***
- 相关连接:
- 无
- 下载说明:
- 别用迅雷下载,失败请重下,重下不扣分!
介绍说明--下载内容均来自于网络,请自行研究使用
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
}
(系统自动生成,下载前可以参看下载内容)
下载文件列表
65695314mydu.tar