oprn/read/write/close系统函数

    open系列是 POSIX 定义的,是UNIX系统里的system call,只能用在 POSIX 的操作系统上。使用open系列函数需要"#include <fcntl.h>".

基于文件描述符的输入输出函数:
   open:打开一个文件,并指定访问该文件的方式,调用成功后返回一个文件描述符。
   creat:打开一个文件,如果该文件不存在,则创建它,调用成功后返回一个文件描述符。
   close:关闭文件,进程对文件所加的锁全都被释放。
   read:从文件描述符对应的文件中读取数据,调用成功后返回读出的字节数。
   write:向文件描述符对应的文件中写入数据,调用成功后返回写入的字节数。
   ftruncate:把文件描述符对应的文件缩短到指定的长度,调用成功后返回0。
   lseek:在文件描述符对应的文件里把文件指针设定到指定的位置,调用成功后返回新指针的位置。
   fsync:将所有已写入文件中的数据真正写到磁盘或其他下层设备上,调用成功后返回0。
   fstat:返回文件描述符对应的文件的相关信息,把结果保存在struct stat中,调用成功后返回0。
   fchown:改变与打开文件相关联的所有者和所有组,调用成功后返回0。
   fchmod:把文件描述符对应的文件的权限位改为指定的八进制模式,调用成功后返回0。
   flock:用于向文件描述符对应的文件施加建议性锁,调用成功后返回0。
   fcntl:既能施加建议性锁也能施加强制性锁,能建立记录锁、读取锁和写入锁,调用成功后返回0。
   dup:复制文件描述符,返回没使用的文件描述符中最小的编号。
   dup2:由用户指定返回的文件描述符的值,用来重新打开或重定向一个文件描述符。
   select:同时从多个文件描述符读取数据或向多个文件描述符写入数据。
文件描述符的优点:兼容POSIX标准,许多系统调用都依赖于它。
文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。

1)write

#include <unistd.h>

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

参数说明:

    fildes:与文件相对应的文件描述符,可通过调用open函数获取

    buf:存放将写入文件的数据,可以是字符串,也可是其他数据。其中buf是指向字符串的指针

    nbytes:需写进文件的字节数

返回值:

    -1:写入失败

    0:写入0个字节

    x:已写入x个字节

2)read

#include <unistd.h>

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

参数说明:

    fildes:文件描述符

    buf:存放从文件中读取的数据

    nbytes:希望读取的直接数

返回值:

    -1:读取失败

    0:读取0个字节

    x:已读取x个字节

3)open

参数说明:

    path:文件存放路径;
    oflags:打开方式。取值如下:

    O_RDONLY:以只读方式打开,O_WRONLY:以只写方式打开,O_RDWR:以读写方式打开

    oflages参数中还包括下列可选模式的组合(用按位或操作)

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

    O_TRUNC:把文件长度设为0,丢弃已有的内容

    O_CREAT:如果需要,就按参数mode中给出的访问模式创建文件

    O_EXCL:已O_CREAT一起使用,确保调用者创建出文件

4)close
#include <unistd.h>

int close(int fildes);

参数:

fildes:文件描述符

返回:

success:0

fail:-1

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注