四、特殊文件操作

在linux系统中,所谓特殊文件,就是指普通文件以外的其他文件,除了普通文件外,还有其他三类文件:设备文件,目录文件,链接文件,管道文件!在这一节里,我们将学习以上所述的,区别于普通文件的操作——特殊文件操作。

1、目录文件操作

与文件目录相关的系统调用有mkdir,opendir,closedir ,readir,scandir等:

mkdir函数说明:创建目录文件
#include <sys/types.h>
#include <sys/stat.h>
int mkdir(const char* pathname,modet_ mode);
pathname:目录名。mode目录权限
函数返回:成功返回0,失败返回-1.

rmdir 函数说明:删除目录文件
#include <unistd.h>
int rmdir(const char* pathname);
pathname:目录名
函数返回:成功返回0,失败返回-1.

opendir函数说明:打开目录文件
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char* name);
打开参数name指定的目录,并返回DIR*形态的目录流,和open()类似,接下来对目录的读取和搜索都要使用此返回值。
函数返回:成功返回DIR*形态的目录流指针,打开失败则返回空。

readdir函数说明:读取该目录
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
struct dirent* readdir(DIR * dir);
dir:被打开的文件目录流指针。
返回返回值:返回一个dirent的结构体。此结构体定义如下:
struct dirent
{
long d_ino;  //索引节点号
off_t d_off;  //在目录文件中的偏移
 unsigned short d_reclen; //文件目录的长度
  char d_name [NAME_MAX+1]; //文件目录名 
 }

closedir函数说明:关闭目录文件
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dir);
dir:被打开的文件目录流指针。
函数返回:成功返回0,打开失败则返回-1。

chdir函数说明:改变当前的工作目录到path指定的路径。

#include <unistd.h>
int chdir (const char *path);
path,指定当前工作目录的路径。
返回值:成功,返回0;失败,返回-1,同时errno置位。

getcwd函数说明:获取当前工作目录的绝对路径。

#include <unistd.h
char * getcwd (char *buf,size_t size);
buf:存放当前工作目录的缓冲区。
size:buf的长度。
返回值:成功,返回指向buf的指针,如果目录名字长度超出了size,则返回NULL。

2、衔接文件操作

衔接文件有点像windows系统中的快捷方式,但是又不完全一样。Linux系统中的链接有两种方式:软链接和硬链接。
(1)、软链接文件
软连接又叫符号链接,这个文件包含了另一个文件的路径名,可以是任意文件或目录,可以链接不同文件系统的文件的路径名。
symlink系统调用说明:建立软链接
#include <unistd.h>
int symlink(const char* oldpath , const char* newpath);
参数newpath:衔接的名称
参数 oldpath:已存在文件路径和文件名
函数返回:成功返回0,失败返回-1.
备注:参数oldpath指定的文件一定要存在,否则无法建立有效的连接!newpath存在则会建立链接失败。

(2)、硬链接文件:
硬链接文件大体上和软连接执行的效果差不多,但是硬链接不允许给目录建立链接并且不能跨系统。
link系统调用:建立硬链接
#include <unistd.h>
int link(const char* oldpath , const char* newpath);
参数newpath:衔接的名称
参数 oldpath:已存在文件路径和文件名
函数返回:成功返回0,失败返回-1.

(3)、unlink系统调用
从文件系统删除一个名字,如果这个名字是一个文件的最后一个连接,并且没有进程打开它,则这个文件被删除,空间被释放。如果这个名字是一个文件的最后一个连接,但是有其他进程打开了这个文件,那么这个文件就会一直保持存在,直到最后一个文件描述符被关闭。如果这个名字关联到一个符号连接,则这个连接被删除。如果这个名字关联到一个socket,fifo或者设备,那么这个名字被删除,但是使用这个对象的进程可以继续使用它。
#include <unistd.h>
int unlink (const char *path);
path:文件路径
返回值:成功,返回0;失败,返回-1,同时errno置位。
3、文件权限相关函数

(1)、chmod系统调用:改变文件或目录的访问权限。

#include<sys/stat.h>

int chmod(const char *path, mode_t mode):

path参数指定的文件,被修改为具有mode参数给给出的访问权限。

返回值:成功,返回0;失败,返回-1,同时errno置位。

(2)、chown系统调用:改变文件的所有者和组。

#include<sys/stat.h>

#include<unistd.h>

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

path,文件路径
uid_t,用户ID
gid_t,组ID

这个调用使用的是用户的ID和组ID的数字值(通过getuid和getgid嗲用获得)和一个用于限定谁可以修改文件属主的系统值。

返回值:成功,返回0;失败,返回-1,同时errno置位。

4、 文件时间相关函数

点击打开链接http://blog.csdn.net/water_cow/article/details/7521567

相关函数参考此博文。

文件操作之特殊文件操作相关推荐

  1. 【FFmpeg】FFmpeg中操作目录、文件的接口

    1.简述 在学习FFmpeg源码中的例子时,发现FFmpeg封装了操作目录和文件的接口.这篇博客把这些接口罗列出来,作为笔记简单记录下. 2.接口列表 打开目录,准备读取目录信息 int avio_o ...

  2. linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...

    文件操作相关命令 文件操作相关命令 1.创建文件夹mkdir 2.创建文件touch 3.移动文件夹mv(类似于剪切) 4.删除rm 5.重命名mv 6.复制cp 7.查看文件(cat.head.ta ...

  3. PHP文件上传和文件操作案例

    <?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname = 'upload'; $fileClass = new fileClass($ ...

  4. python创建文件夹命令_python文件操作指令

    原文地址:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html 常用的文件操作指令: python中对文件.文件夹(文件操 ...

  5. python读取、写入、移动、复制文件(夹)以及其他关于文件(夹)的操作

    文章目录 基础操作 判断文件或者目录是否存在 创建目录 连接两个路径成为一个路径 读取文件 写入文件 移动文件(夹) 复制文件(夹) 突然发现,经常需要进行文件操作,因为如果程序运行时间很长,我们需要 ...

  6. PHP 4.4.7 中用 PEAR 类库操作 ZIP 压缩文件

    运行 pear install Archive_Tar 命令可以安装 PEAR 的 Tar 的操作类,但是 Tar 文件是个打包归档文件,并没有压缩而使文件占用的空间减少.而运行 pear insta ...

  7. C语言 文件操作10--配置文件读写

    //配置文件读写项目#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include& ...

  8. python中io.textio_Python文件读写概述(IO操作、文件读写、stringiobytesio、序列化),python,的,小,总结,StringIOBytesIO...

    IO操作 在进行文件的读写之前,需要说明几点.首先,运行的程序和读取的数据都会在内存中缓存. 进入到 程序或数据 内存 其次,用python程序进行文件的读写,需要创建一个小工具–文件流,用来处理数据 ...

  9. lsof 查看一个进程打开哪些fd及对应的文件或套接字操作

    如何查看一个进程打开哪些fd及对应的文件或套接字操作 /********************************************************************** A ...

  10. python读文件操作-python 之文件操作

    使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try ...

最新文章

  1. linux 命令详解 二十二
  2. oracle学习-存储过程返回一个值,和返回一个结果集
  3. Linux下文件内容查阅命令
  4. cmd 无法查看 台式机ip地址
  5. 含泪整理最优质草食动物unity3d模型素材,你想要的这里都有
  6. 美团工作10个月心得
  7. 通过dns2tcp绕过校园网认证进行免费上网
  8. JavaScript总结(二:基础知识)
  9. iphone/ipad保存图片问题(已解决)
  10. SylixOS进化简史
  11. 电脑休眠后无法唤醒的解决办法!
  12. oracle数据库常用操作
  13. 前有莫雷,今有清华学霸要求公开华人程序员自杀真相,被Facebook开除了
  14. “茶界茅台”竹叶青的数字化营销玩法 | 案例
  15. Linux NAS 盘挂载
  16. java求长方体体积用什么类_Java题求解: 设计一个求长方体的体积和表面积的类Cube,包括以下属性和方法。 l1:长方体...
  17. 【Python】《点燃我,温暖你》,快来Get李峋同款爱心代码
  18. 个人网站页面总结+源码
  19. 微信小程序开发商品展示(2)
  20. Java多线程sleep和wait的区别

热门文章

  1. 怎么通过助记词登录MetaMask和通过私钥登录
  2. windows编写linux脚本,适用于 Windows 和 Linux 的脚本编写工具包
  3. Redis AKF CAP 集群知识
  4. 爱企查显示,Keep赴港上市,冲击“线上健身第一股”
  5. sqrt函数,对数进行开根号
  6. Rust 用于 STM32 开发
  7. 关于栈顶指针初值为-1和0的区别
  8. 利用logic friday 把分组密码Present的S盒转化成布尔函数
  9. 如何设置UILabel的内边距?
  10. Lenovo T420 声音卡解决办法汇总