Linux-文件I/O

open()

需要包含的头文件:

<sys/types.h>  <sys/stat.h>  <sys/fcntl.h>

格式:

int open(const str *pathname, int oflag, [..., mode_t mode])

pathname:打开或创建文件的全路径名;
oflag:函数的多个处理方式,详情见下表;
mode_t:用于创建文件时设置文件权限。

oflag参数说明:

O_RDONLY 只读模式
O_WRONLY 只写模式
O_RDWR 读写模式
O_APPEND 追加到文件尾
O_CREATE 文件不存在时创建,有次参数的时候open函数要设置第三个参数,为文件添加权限
O_EXCL 如果同时指定O_CREATE而该文件又是存在的,报错。也可以测试一个文件是否存在,不存在则报错
O_TRUNC 如果此文件存在,并且以只读或只写模式打开,则将此文件截断为0
O_SYNC 使每次write操作都等到物理I/O操作完成

示例:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fnctl.h>
#include <sys/stat.h>

#define FILE_PATH "./test.txt"

int main(void)
{
    int fd;
    if((fd = open(FILE_PATH, O_RDWR | O_CREAT | O_EXCL, 0666)) < 0) {
        printf("create error\n");
        exit(-1);
    } else {
        printf("create success\n");
    }
    return 0;
}

如果当前目录下存在text.txt,屏幕上就会打印”create error”,否则创建该文件,并打印”create success”。

read

需要包含的头文件:

<unistd.h>

函数原型:

ssize_t read(int fd, viod * buf, size_t count)

功能:从打开的文件中读取数据位置。
返回值:实际读到的字节数;已读到文件尾返回0,出错返回-1,ssize_t是系统头文件中用typedef定义的数据类型,相当于signed int。
参数说明:
fd:要读取的文件的描述符;
buf:得到的数据在内存中的位置的首地址;
count:期望本次能读取到的最大字节数。size_t是系统头文件中用typedef定义的数据类型,相当于unsigned int。

write

需要包含的头文件:

<unistd.h>

函数原型:

ssize_t write(int fd, const void * buf, size_t count)

功能:向打开的文件写数据。
返回值:写入成功返回世界写入的字节数,出错返回-1。(注意:返回-1的常见原因是:磁盘空间已满,超过了一个给定进程的文件长度。)
参数:
fd:要写入文件的文件描述符;
buf:要写入文件的数据在内存中存放位置的首地址;
count:期望写入的数据的最大字节数

read、write使用示例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
    char buf[100];
    int num=0;

    //获取键盘输入
    if((num = read(STDIN_FILENO, buf, 10)) == -1) {
        printf("read error");
        error(-1);
    } else {
        //将键盘输入又输出到屏幕上
        write(STDOUT_FILENO, buf, num);
    }

    return 0;
}

结果:
这里写图片描述

close

需要包含的头文件:

unistd.h

函数原型:

int close(int filedes)

功能:关闭一个打开的文件(注:当一个进程中止的时候,它所以打开的文件都是由内核自动关闭的,很多功能都已使用这一功能却没有显式地调用close。但是作为一个优秀的程序员应该显式地关闭不再使用的文件)。
参数:需要关闭文件的文件描述符。

lseek

需要包含的头文件:

sys/types.h   unistd.h

函数原型:

off_t lseek(int filesdes, off_t offset, int whence)

功能:设置文件内容读写位置。
返回值:成功返回新的文件位移,出错时返回-1;同样的,off_t是系统头文件定义的数据类型,相当于signed int。
参数whence:

whence 文件位移量
SEEK_SET 从文件开始的处offset个字节
SEEK_CUR 当前值+offset,offset可正可负
SEEK_END 文件长度+offset,offset可正可负

猜你喜欢

转载自blog.csdn.net/wake_me_up123/article/details/78720395