linux目录操作
来源:互联网 发布:中国象棋人机对战软件 编辑:程序博客网 时间:2024/05/16 02:06
linux的目录操作主要有以下几个重要的函数
1.获取绝对路径
#include <unistd.h>
char *get_current_dir_name(void);
函数返回当前的绝对路径
2.改变当前路径
#include <unistd.h>
int chdir(const char *path);
执行完此函数,则通过get_current_dir_name,可以看到绝对路径发生了变化
3.打开某路径
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
返回一个指向目录流的指针
4.读取目录流
#include <sys/types.h>
#include <dirent.h>
struct dirent *readdir(DIR *dir);
The readdir() function returns a pointer to a dirent structure repre-senting the next directory entry in the directory stream pointed to by dir. It returns NULL on reaching the end-of-file or if an error occurred.
读取打开的目录流,返回一个目录信息的结构体
两个重要的结构体
对于这两个结构体,只是有助于理解,无需死记硬背,实在记不起来参数,可以man一下。
DIR结构体的定义如下:struct __dirstream { void *__fd; char *__data; int __entry_data; char *__ptr; int __entry_ptr; size_t __allocation; size_t __size; __libc_lock_define (, __lock) }; typedef struct __dirstream DIR;
struct dirent {ino_t d_ino; /* inode number */off_t d_off; /* offset to the next dirent */unsigned short d_reclen; /* length of this record */unsigned char d_type; /* type of file */char d_name[256]; /* filename */};到此,简单的目录所需要的关键的数据结构和关键的函数已经介绍完了。
文件操作的思路
具体的过程和思路应该是
1.首先打开一个路径,那这个路径返回什么呢?一个路径的描述符(类似于文件操作的文件描述符)。
2.现在已经获得了路径的描述符,然后我就可以操作这个路径描述符了(还是类比文件操作的文件描述符)
3.通过读路径描述的操作,获取该目录下的一个个目录描述符结构体指针,然后可以获得每个文件的大小,名字等信息
demo
下面是我自己写的一个简单的demo
#include<stdio.h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>int main(){ printf("%s\n",get_current_dir_name()); chdir("/home/fy"); printf("%s\n",get_current_dir_name()); struct dirent *dirinfo; DIR *path; path=opendir("."); while((dirinfo=readdir(path))!=NULL) { printf("%s\n",dirinfo->d_name); } closedir(path); return 0;}
- linux操作目录栈
- Linux目录操作
- linux目录操作
- Linux目录操作
- 部分linux目录操作
- linux目录操作命令
- linux目录操作
- Linux目录文件操作
- Linux目录相关操作
- linux下目录操作
- linux目录操作
- linux文件目录操作
- linux 操作目录结构
- linux文件目录操作
- linux 目录操作
- 20151026-linux目录操作
- Linux目录操作命令
- Linux目录操作
- oracle Golden Gate
- android4.0.3 wifi 移植记录
- 动态规划-最长公共子序列
- 在ubuntu中安装及使用rvm管理ruby版本
- 抓小偷喽!!!
- linux目录操作
- 输入一个正整数,判断其是否为素数
- 1000内的回文数
- 输入一个不大于5位的整数,输出它是几位,并倒着输出这个数
- java.lang.OutOfMemoryError: PermGen space解决方法
- 各种sizeof
- 比赛分数的计算
- 两个整数的最大公约数和最小公倍数
- NO.2 C++的cout高阶格式化操作<转载>