嵌入式Linux高级编程--02posix_目录操作.ppt_第1页
嵌入式Linux高级编程--02posix_目录操作.ppt_第2页
嵌入式Linux高级编程--02posix_目录操作.ppt_第3页
嵌入式Linux高级编程--02posix_目录操作.ppt_第4页
嵌入式Linux高级编程--02posix_目录操作.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式Linux高级编程,Linux目录与文件,王莉,目录操作,打开目录:opendir DIR *opendir(const char *name); 读取目录:readdir struct dirent *readdir(DIR *dir); 关闭目录:closedir int closedir(DIR *dir);,打开目录,#include #include DIR *opendir(const char *name); 功能:opendir()用来打开参数name指定的目录,并返回DIR*形态的目录流。 返回值:成功返回目录流,失败返回NULL,读取目录,#include #incl

2、ude struct dirent *readdir(DIR *dir); 功能:readdir()返回参数dir目录流的下个目录的进入点。 返回值:成功返回结构体指针,错误返回NULL。 结构说明: 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_name256

3、; /* filename */ ;,关闭目录,#include #include int closedir(DIR *dir); 功能:closedir()关闭dir所指的目录流。 返回值:成功返回0,失败返回-1,错误原因存在errno中。,#include #include #include #include int main(void) DIR * dir; struct dirent * dp; int count; if (dir = opendir(“/root) = NULL) perror(opendir); exit(1); count = 0; while (dp = r

4、eaddir(dir) != NULL) /每次读取当前目录下的一个文件 printf(%sn, dp-d_name); count+; closedir(dir); return 0; ,作业,把/root目录生成一个文件,文件内容就是该目录下的所有文件及目录名,文件属性,#include #include #include int stat(const char *path, struct stat *buf); 功能:查看文件或目录属性 返回值:成功返回0,错误返回-1,stat()函数用来将参数path所指的文件状态复制到参数buf所指的结构中. struct stat dev_t s

5、t_dev; /* ID of device containing file */ ino_t st_ino; /* inode number */ mode_t st_mode; /* protection */ nlink_t st_nlink; /* number of hard links */ uid_t st_uid; /* user ID of owner */ gid_t st_gid; /* group ID of owner */ dev_t st_rdev; /* device ID (if special file) */ off_t st_size; /* total

6、 size, in bytes */ blksize_t st_blksize; /* blocksize for filesystem I/O */ blkcnt_t st_blocks; /* number of blocks allocated */ time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last status change */ ;,int fstat(int filedes , str

7、uct stat * buf) ; int lstat(const char * pathname, struct stat *buf); stat函数返回一个与此命名文件有关的信息结构, fstat函数获得已在描述符filedes上打开的文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。,文件类型,宏文件类型 S _ I S R E G ( ) 普通文件 S _ I S D I R ( ) 目录文件 S _ I S C H R ( ) 字符特殊文件 S _ I S B L K ( ) 块特殊

8、文件 S _ I S F I F O ( ) 管道或F I F O S _ I S L N K ( ) 符号连接( P O S I X . 1或S V R 4无此类型) S _ I S S O C K ( ) 套接字(P O S I X . 1或S V R 4无此类型),#include #include #include int main( int argc, char *argv ) int i; struct stat buf;/文件属性及状态变量 char *msg; for ( i=1; iargc; i+ ) printf( %s: , argvi ); if ( lstat(ar

9、gvi, ,练习,1.将/dev/目录下所有字符设备文件名保存到chafile.txt文件中 2.将/etc/目录下所有是目录的目录名保存到dirfile.txt,其他函数:,#include #include int chmod(const char *path, mode_t mode); 功能:chmod函数可以更改现存文件的存取许可权。 返回值:成功返回0,错误返回-1。 #include #include int chown(const char *path, uid_t owner, gid_t group); 功能:chown函数可用于更改文件的用户ID和组ID。 返回值:成功返

10、回0,错误返回-1。,权限部分的实现,S _ I S U I D 执行时设置-用户- I D S _ I S G I D 执行时设置-组- I D S _ I S V T X 保存正文 S _ I R W X U 用户(所有者)读、写和执行 S _ I R U S R 用户(所有者)读 S _ I W U S R 用户(所有者)写 S _ I X U S R 用户(所有者)执行 S _ I R W X G 组读、写和执行 S _ I R G R P 组读 S _ I W G R P 组写 S _ I X G R P 组执行 S _ I R W X O 其他读、写和执行 S _ I R O T H 其他读 S _ I W O T H 其他写 S _ I X O T H 其他执行,练习:,ls

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论