1.stat  获取文件属性

       #include <sys/types.h>

       #include <sys/stat.h>

       #include <unistd.h>

       int stat(const char *filename,struct stat *buf);

       int fstat(fd, struct stat *buf);

       int lstat(const char *filename, struct stat *buf);

      

       fstat与stat的区别是fstat通过文件描述符指定文件;lstat与stat的区别在于,对于符号连接文件,lstat返回的是符号链接文件本身的状态信息,而stat返回的是符号链接指向的文件状态信心。

       成功返回0,错误范围-1

 

2.  chown 设置文件属性

       #include <sys/types.h>

       #include <unistd.h>

       int chown(const char *path,uid_t owner, gid_t group);

       int fchown(int fd, uid_t owner, gid_t group)’

       int lchown(const char *path, uid_t owner,gid_t group);

   

   fchown与chown的区别是fchown通过文件描述符指定文件;lchown与chown的区别在于,对于符号连接文件,lchown返回的是符号链接文件本身的状态信息,而chown返回的是符号链接指向的文件状态信心。

       成功返回0,错误范围-1

       文件的所有者只能改变文件的组id为其所属组中的一个,超级用户才能修改文件的所有者id,并且超级用户可以任意修改文件的用户组id。如果参数owner或group指定为-1,那么文件的用户id和组id不会被改变。

 

3. truncate 改变文件大小

       #include <sys/types.h>

       #include <unistd.h>

       int truncate(const char *path, off_t length);

       int ftruncate(int fd, off_t length);

      

       将指定文件大小改为参数length指定的大小,如果原来的文件比参数length大,则超过的部分会被删除;如果原来的文件大小比参数length小,则文件将被扩展,扩展部分用0填充。

       成功返回0,错误范围-1

 

4. utime 改变文件的st_mtime域和st_ctime域,即存取时间和修改时间。

       #include <sys/types.h>

       #include <utime.h>

       int utime(const char *filename,struct utimbuf *buf);

      

       #include <sys/time.h>

       int utime(char *filename,struct timeval *tvp);

 

       struct utimbuf

       {

              time_t actime;

              time_t modtime;

       }

       如果buf是一个空指针,则存取时间和修改时间都为当前时间。

       成功返回0,错误范围-1

 

5. umake 设置文件创建时的屏蔽字,并返回以前的值

       #include <sys/types.h>

       #include <sys/stat.h>

       mode_t umask(mode_t mask);

 

6. rename 文件的移动和修改文件名

       #include <stdio.h>

       int rename(const char *oldpath, const char *newpath);

       若newpath指定的文件已存在,则原文件会删除

 

7. remove 文件的删除

       #include <unistd.h>

       int unlink(const char *pathname);

       int remove(const char *pathname);

  

       文件的删除可以使用unlink系统调用,目录的删除需要使用rmdir系统调用,而通用的既能删除文件又能删除目录的系统调用是remove,remove内部封装了unlink和rmdir。

       成功返回0,错位返回-1。

 

8. mkdir 目录的创建

       #include <sys/types.h>

       #include <sys/stat.h>

       int mkdir(const char *pathname, mode_t mode);

       成功返回0,错位返回-1。

 

9. rmdir 目录的删除

       #include <unistd.h>

       int rmdir(const char *pathname);

      rmdir只能删除空目录,成功返回0,错位返回-1。

 

10. getcwd 获取当前目录

       #include <unistd.h>

       char *gercwd(char *buf, size_t size);

       char *get_current_dir_name(void);

       char *getwd(char *buf);

      

       getcwd会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超过参数size大小,则返回值为NULL,errno的值为ERANGE。倘若参数buf为NULL,getcwd()会根据参数size的大小自动分配内存(使用malloc),如果size也为0,则getcwd()会根据工作目录绝对路径的字符串长度来决定配置的内存大小。进程可以在使用完此字符串后利用free()来释放空间。

       执行成功则将结果复制到参数buff所指向的内存空间,或是返回自动分配的字符串指针,失败返回NULL.

 

11. chdir 设置工作目录

       #include <unistd.h>

       int chdir(const char *path);

       int fchdir(int fd);

       chdir将工作目录改为由path指定的目录,fchdir将工作目录改为由文件描述符fd指定的目录。

       执行成功返回0,错误返回-1

 

12. 获取目录信息

1)  opendir

       #include <sys/types.h>

       #include <dirent.h>

       DIR *opendir(const char *name);

       opendir打开参数name指定的目录,并返回DIR*形态的目录刘,类似于文件描述符。成功返回目录流,失败返回NULL

2)  readdir

       #include <sys/types.h>

       #include <dirent.h>

       struct dirent *readdir(DIR *dir);

       readdir用来从dir所指向的目录读取出目录的信息,返回一个struct dirent结构的指针。

       struct dirent

       {

              long d_ino;//此目录i节点编号

              off_t d_off;//目录文件开头至此目录进入点的位移

              unsigned short d_reclen;//d_name的长度

              char d_name[NAME_MAX+1];//以NULL结尾的文件名

       }

       函数执行成功范围该目录下一个文件的信息。如果用opendir打开某个目录,第一次调用该函数,则返回的是该目录下的第一个文件的信息。如果发生错误或者读到目录文件尾,返回NULL。

3)  closedir

       #include <sys/types.h>

       #include <dirent.h>

       int *closedir(DIR *dir);

       关闭目录,成功返回0,失败返回-1

 

13. symlink建立符号链接

       #include <unistd.h>

       Int symlink(const char *actualpath, const char *sympath);

下面给出三个实例分别实现不同的函数功能:

1.改变进程的当前目录到指定的目录然后打印出该目录名

注意:改变的是当前进程的目录,并不修改父进程,所以当程序退出后,功能不变

/*改变进程的当前目录到指定的目录然后打印出该目录名。*/
#include <unistd.h>
#include <limits.h>
#include <stdio.h>int main(int argc, char *argv[])
{char path[1000];if(argc!=2){printf("Usage ex3-7 <pathname>\n");return 1;}if(chdir(argv[1])<0){printf("chdir failed\n");return 2;}if(getwd(path)==NULL){printf("getwd failed\n");return 3;}printf("CWD =%s \n", path);return 0;
}

2.创建一个目录,然后删除此目录

/*改变进程的当前目录到指定的目录然后打印出该目录名。*/
#include <unistd.h>
#include <limits.h>
#include <stdio.h>int main(int argc, char *argv[])
{char path[1000];if(argc!=2){printf("Usage ex3-7 <pathname>\n");return 1;}if(chdir(argv[1])<0){printf("chdir failed\n");return 2;}if(getwd(path)==NULL){printf("getwd failed\n");return 3;}printf("CWD =%s \n", path);return 0;
}

3.目录打开,读取和关闭函数的使用方法

#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>int main(int argc, char *argv[])
{char path[1000];DIR * dp;struct dirent *pdirent;if(argc!=2){printf("Usage  ex3-9 <pathname>\n");return 1;}if((dp=opendir(argv[1]))==NULL){printf("Opendir %s failed\n", argv[1]);return 2;}if((pdirent=readdir(dp))==0){printf("readdir %s failed\n", argv[1]);return 3;}printf("%s\n",pdirent->d_name);closedir(dp);return 0;
}

Linux C编程--目录文件操作相关推荐

  1. 每天一个linux命令(目录文件操作):【转载】Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  2. Linux系统编程 | 01 -文件操作

    一.文件操作方法 linux中有两种方法可以操作文件:系统调用和c库函数. 1. 什么是系统调用? 由操作系统实现并提供给外部应用程序的编程接口(API),是应用程序同系统之间数据交互的桥梁. C标准 ...

  3. Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)

    Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...

  4. 【Linux系统编程】文件描述符的复制dup()和dup2()

    00. 目录 文章目录 00. 目录 01. 文件描述符复制概述 02. 常用函数 2.1 dup函数 2.2 dup2函数 03. 案例实战 3.1 dup示例 3.2 dup2示例 04. 附录 ...

  5. Linux系统编程之文件IO

    Linux系统编程之文件IO 文件IO第一天 一.标准IO基本概念 1.1c语言函数 (c库函数) 调用实现某一个功能,(API) 1.2系统调用:内核中的程序接口,应用程序和硬件设备之间的中间层 1 ...

  6. 递归遍历Linux下的目录文件源码实现

    网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include ...

  7. php 语言文件操作,php中目录文件操作详谈

    php中目录文件操作详谈 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,以下是小编整理的php中目录,文件操作详谈,欢迎来 ...

  8. linux系统编程之文件与I/O(六):fcntl 函数与文件锁

    2013-05-14 11:26 8290人阅读 评论(2) 收藏 举报  分类: linux系统编程(19)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.fcntl函数 功能:操纵文 ...

  9. 大白菜读取linux硬盘,大白菜的linux之旅,文件操作首探

    大白菜的linux之旅,文件操作首探 程序代码:#include #include #include #include #define MAXLEN 100 void charge(char argv ...

最新文章

  1. Python学习入门10:零基础如何开始学习 Python?从小白变大牛!
  2. struct多种声明定义写法的小结
  3. Netty4实战 - TCP粘包拆包解决方案
  4. CentOS 7下安装GUI图形界面
  5. 安装centos7 Minimal后 开启远程SSH
  6. python下载bt文件_Python实现解析Bit Torrent种子文件内容的方法
  7. TMDB电影数据分析
  8. matlab 加权残值法,1987_03固体力学加权残值法_10217273.pdf
  9. GetLastError错误码大全
  10. 【家庭网络】申请安装移动宽带过程及简单建议
  11. 在Windows 10下提取/读取 Linux img 镜像文件
  12. Contiki教程——进程
  13. 【嵌入式08】STM32F103C8T6寄存器方式借助面包板点亮LED流水灯详解
  14. Unity 接入百度AI - 动物识别
  15. AI在招聘领域的这些应用,你都知道几个?
  16. server-sent-Event (简称SSE)
  17. mysql 投影运算_数据库查询 - 通俗易懂解释:选择、投影、并、差、笛卡尔积、连接 - 小黑电脑...
  18. 转 ERP和SAP是什么意思?
  19. 基于C#的WinForm打印程序附带源代码
  20. 老外用批处理写的系统文件替换

热门文章

  1. Struts2如何实现MVC,与Spring MVC有什么不同?
  2. 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
  3. 日本依靠储能系统解决光伏消纳问题
  4. 听安全专家讲如何黑掉黑客的故事
  5. 任正非致“背叛者”与给竞争对手捐款
  6. 系统架构师秘籍(二)软件架构- 续
  7. Yii2 定时任务创建(Console 任务)
  8. Tomcat -- Cannot create a server using the selected type
  9. C++生成随机数:负二项分布/帕斯卡分布(negative binomial distribution)
  10. 记:返回方法参数的值(或多个值),