我们编写程序的时候,有时候会要得到我们当前的工作路径。C 库函数提供了 getcwd 来解决这个问题。
#include ;
char *getcwd(char *buffer,size_t size);
我们提供一个 size 大小的 buffer,getcwd 会把我们当前的路径考到 buffer 中.如果 buffer太小,函数会返回-1 和一个错误号.
Linux提供了大量的目录操作函数,我们学习几个比较简单和常用的函数。
#include
#include
#include
#include
#include
int mkdir(const char *path, mode_t mode); /*创建一个目录*/
DIR *opendir(const char * path);/*打开一个目录为以后读做准备*/
struct dirent *readdir(DIR *dir);/*读一个打开的目录*/
void rewinddir(DIR *dir);/*重读目录 跟rewind函数一样*/
off_t telldir(DIR *dir, off_t off);
void seekdir(DIR *dir, off_t off);/*类似于fteel和fseek函数*/
int closedir(DIR *dir);/*关闭目录*/
#include
#include
#include
#include
#include
#include
#include
static int get_file_size_time(const char *filename)
{
struct stat statbuf;
if(stat(filename, &statbuf) == -1)
{
printf("Get stat on %s Error: %s\n", filename, strerror(errno));
return(-1);
}
if(S_ISDIR(statbuf st_mode))
return(1)
if(S_ISREG(statbuf st_mode))
{
printf("%s size: %ld bytes\t modified at %s", filename, statbuf.st_size, ctime(&statbuf.st_mtime));
}
return(0);
}
int main(int argc, char **argv)
{
DIR *dirp;
strunct dirent *direntp;
int stats;
if(argc!=2)
{
printf("Usage: %s filename\n\a", argv[0]);
exit(1);
}
if(((stats=get_file_size_time(argv[1]))==0) || stats==-1)
exit(1);
if((dirp=opendir(argv[1]))==NULL)
{
printf("Open Directory %s Error: %s\n", argv[1],strerror(errno));
exit(1);
}
while((direntp=readdir(dirp))!=NULL)
{
if(get_file_size_time(direntp->d_name)==-1)
break;
closedir(dirp);
exit(1);
}
return 0;
}
阅读(1238) | 评论(0) | 转发(0) |