目录基本操作函数
目录操作
1,打开目标目录
2.读取目录
3.关闭目录
目录 当文件看,只不过操作函数和操作文件函数不一样。
opendir
DIR *opendir(const char *name);
- 功能:
打开一个目录获得一个目录流指针
- 参数:
name:目录名
- 返回值:
成功返回目录流指针 失败返回NULL
readdir
struct dirent *readdir(DIR *dirp);
- 功能:
从目录流中读取文件信息并将保存信息的结构体地址返回
- 参数:
dirp:目录流指针
- 返回值:
包含文件信息的结构体 出错或者读到目录流末尾返回NULL
closedir
关闭目录
int closedir(DIR *dirp);
- 功能:
关闭之前已经打开的目录流对象
- 参数:
opendir的返回结果中目录流对象
- 返回值:
成功 0 失败 -1
实现ls步骤:
DIR * dir = opendir("./");
Struct dirent*info = readdir(dir);//readdir一次读一个
closedir(dir);
int main(int argc, char *argv[])
{
DIR * dir = opendir("./");
if(NULL == dir)
{
fprintf(stderr,"opendir errpr\n");
return 1;
}
while(1)
{
struct dirent * info = readdir(dir);
if(NULL == info)
{
break;
}
printf("%s\n",info->d_name);
}
closedir(dir);
return 0;
}
命令函数
chdir
//cd
int chdir(const char *path);// /home/linux
- 功能:
改变当前程序的工作路径
- 参数:
path:改变到的路径
- 返回值:
成功返回0 失败返回-1
getcwd
//pwd
char *getcwd(char *buf, size_t size);
- 功能:
获得当前的工作路径
- 参数:
buf:保存工作路径空间的首地址
size:保存路径空间的长度(max)
- 返回值:
成功返回包含路径空间的字符串首地址 失败返回NULL
mkdir
int mkdir(const char *pathname, mode_t mode);//777 666 --x--x--x
- 功能:
创建一个目录
- 参数:
pathname:路径
mode:
mode & ~umask 0002
目录权限0777(x代表目录能不能来回切换)
umask新建文件和目录时起作用
- 返回值:
成功返回0 失败返回-1
rmdir
rm -fr rmdir
int rmdir(const char *pathname);
- 功能:
删除一个空目录文件(必须是空目录)
- 参数:
pathname:目录文件的名字
- 返回值:
成功返回0 失败返回-1
stat
int stat(const char *path, struct stat *buf);
- 功能:
获得文件的属性
- 参数:
path: 文件的路径
buf: 属性存放空间的首地址
- 返回值:
成功返回0
失败返回-1
linux中文件名和文件内容分开存储(靠Inode匹配,Inode文件在硬盘上的编号)
时间函数
time
tm = time(NULL);
- 功能:
获得1970年到现在的秒数
- 参数:
t:存放秒数的空间首地址
- 返回值:
成功返回1970年到现在的秒数
失败返回-1
time()
函数用于获取当前时间点自1970年1月1日0时0分0秒(UTC时间)以来的秒数。这通常被称为“时间戳”。time_t time(time_t *t);
参数理解
t
:这是一个指向time_t
类型变量的指针。如果t
不是NULL
,time()
函数会将获取到的时间戳存储在t
指向的变量中。- 如果
t
为NULL
,则该函数仅返回时间戳,而不存储在任何地方。
localtime
struct tm *localtime(const time_t *timep);
- 功能:
将一个秒数转化成日历时间
- 参数:
timep:保存秒数空间的地址
- 返回值:
成功返回保存日历时间结构体的指针
失败返回NULL
struct tm
{
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
ctime
char *ctime(const time_t *timep);//date
- 功能:
将时间秒数转化成字符串
- 参数:
timep:保存时间空间的地址
- 返回值:
成功返回获得时间字符串的首地址
失败返回NULL
根据id获得信息
getpwuid
struct passwd *getpwuid(uid_t uid);
- 功能:
根据用户id到/etc/passwd文件下解析获得结构体信息
- 参数:
uid:用户id
- 返回值:
成功返回id对应用户的信息
失败返回NULL
getgrgid
struct group *getgrgid(gid_t gid);
- 功能:
根据gid到/etc/group文件中解析组信息
- 参数:
gid:组id
- 返回值:
成功返回组信息
失败返回NULL