Linux系统调用之文件管理

 

Linux系统调用之文件管理

linux下的文件管理可以通过标准I/O库提供的函数来完成,也可以通过linux系统提供的系统调用来实现。

 

一、系统调用列表

1、头文件:    

#include<unistd.h>

 

#include<fcntl.h>

 

#include<sys/types.h>

 

#include<sys/stat.h>

2、系统调用原型

size_t write(int fildes,const void *buf,size_t nbytes);

 

size_t read(int fildes,void *buf,size_t nbytes);

 

int open(const char *path,int oflags);

 

int open(const char *path,int oflags,mode_t mode);

 

int close(int fildes);

 

int ioctl(int fildes,int cmd,...);

 

off_t lseek(int fildes,off_t offest,int whence);

 

int fstat(int fildes,struct stat *buf);

 

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

 

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

 

int dup(int fildes);

 

int dup2(int fildes,int fildes2);

二、系统调用说明

1、write 

原型:size_t  write (int  fildes,  const  void  *buf,  size_t  nbytes);

用法:#include <unistd.h>

说明:从buf所指的缓冲区写nbytes字节到fildes描述的文件中。

 返回值:成功,返回已写的字节数;失败,返回-1。

 

2、read

原型:size_t  read (int  fildes,  void  *buf,  size_t  nbytes);

用法:#include <unistd.h>

说明:从fildes描述的文件中读取nbytes字节写入到buf缓冲区。

返回值:成功,返回读取的字节数;失败,返回-1。

 

3、open

原型:int  open (const  char  *path,  int  oflags);

            int  open (const  char  *path,  int  oflags,  mode_t  mode);

用法:#include <fcntl.h>

            #include <sys/types.h>

            #include <sys/stat.h>

说明:返回一个文件描述符,它是唯一的,不会与任何其他运行中的进程共享。两个进程同时打开同一个文件,会得到两个不同的文件描述符。

返回值:成功,返回文件描述符;失败,返回-1。

参数说明:oflags必选参数:O_RDONLY(只读方式),O_WRONLY(只写方式),O_RDWR(读写方式)之一;

                    oflags可选参数(常见):

                     O_APPEND:把写入的数据追加在文件的末尾

                     O_CREAT:如果文件不存在就创建,启用mode参数

                     O_EXCL:与O_CREAT一起使用,确保调用者创建出文件,open是一个原子操作,也就是说,它只执行一个函数调用,使用这个可选模式可以防止两个程

                                        序同时创建一个文件。如果文件已经存在,open调用将失败

                  mode参数:

                  S_IRUSR:读权限,文件属主

                  S_IWUSR:写权限,文件属主

                  S_IXUSR:执行权限,文件属主

                  S_IRGRP:读权限,文件所属组

                  S_IWGRP:写权限,文件所属组

                  S_IXGRP:执行权限,文件所属组

                  S_IROTH:读权限,其他用户

                  S_IWOTH:写权限,其他用户

                  S_IXOTH:执行权限,其他用户

 

4、close

原型:int  close (int  fildes);

用法:#include <unistd.h>

说明:终止一个文件描述符fildes与其对应文件之间的关联,文件描述符被释放并能够重新使用

返回值:成功,返回0,;失败返回-1

 

5、ioctl

原型:int  ioctl (int  fildes,  int  cmd,  ...);

用法:#include <unistd.h>

说明:ioctl对描述符fildes指定的对象执行cmd参数给出的操作,根据特定设备所支持函数的不同,还可能会有一个可选的第三个参数;cmd是一个设备相关的参数

返回值:成功,返回0;失败,返回-1

 

6、lseek

原型:off_t  lseek (int  fildes,  off_t  offset,  int  whence);

用法:#include <unistd.h>

            #include <sys/types.h>

说明:根据whence参数,将fildes关联的文件的偏移位置重定位到offset参数指定的位置

返回值:成功,返回从文件头偏移位置,以字节为单位;失败,返回(off_t)-1

参数说明:whence

SEEK_SET:返回值就是offset

SEEK_CUR:返回值是当前位置加offset

SEEK_END:返回值是文件大小加offset

 

7、fstat,stat,lstat

原型:int  fstat (int  fildes,  struct  stat  *buf);

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

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

用法:#include <unistd.h>

            #include <sys/stat.h>

            #include <sys/types.h>

说明:fstat返回fildes关联的文件的信息,存储在buf中;当文件是一个符号链接时,lstat返回的是符号链接本身的信息,而stat返回的是该链接指向的文件的信息

返回值:成功,返回0;失败,返回-1

 

8、dup,dup2

原型:int  dup (int  fildes);

            int  dup2 (int  fildes,  int  fildes2);

用法:#include <unistd.h>

说明:dup,dup2创建文件描述符的副本,dup返回的新描述符是当前可用的描述符中最小的;dup2返回fildes2,若fildes2已经打开,则先关闭,若fildes1=fildes2,则dup2返回fildes2,而不关闭它

返回值:成功,返回新的描述符;失败,返回-1

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值