C语言系统IO,open(),read(),write()

c语言系统IO

市面上的设备基本都是通过IO控制设备文件,然后驱动监听文件变换从而控制外设。同时不同的系统IO接口也可能会有所不同,但大致都相同,本文介绍的是Linux系统下的系统IO;

open()

C语言系统IO,open(),read(),write()_第1张图片

 简单打开文件:

 int fd = open("./test.txt", O_RDWR);//读写方式打开
    if (fd == -1)
    {
        perror("open");
    }
    else
    {
        printf("打开成功!\n");
    }

O_CREAT一般和O_EXCL搭配使用,目的就是要创建一个新文件,防止如果文件存在覆盖原先的内容。

当需要多个产数时,采用的是多个参数做或运算如:

 int fd = open("./test.txt", O_RDWR|O_CREAT);

其返回fd的值为0~1023但0、1、2一般是取不到的,这是系统默认的三个文件的标识符,分别为标准输入,标准输出,标准错误;

 另外如果创建新的文件,最好加上后面mode这个参数,这是代表文件的权限。

权限分为三组:

C语言系统IO,open(),read(),write()_第2张图片

 rwx分别为写权限,写权限,运行权限;所以最大权限为777

read()

简单示例:

C语言系统IO,open(),read(),write()_第3张图片

ssize_t read(int fd, void *buf, size_t count);

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

头文件:

参数:

fd :文件标识符

buf:接收读取的内容,一般为数组或指针;

count:想要读取字节数

默认读的位置为文件开头,想要读指定位置的数据可以用lseek函数调整;

读取数据时以实际内容为主,即便你想读取的数据远超文件实际内容也没关系。
一下是man宝典里对read函数的讲解。

C语言系统IO,open(),read(),write()_第4张图片

 write()

C语言系统IO,open(),read(),write()_第5张图片

 头文件:

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

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

参数:

fd:文件标识符

buf:写入的数据

count:写入的字节数

写入以传入的字节数count为主,如果count大于buf中的字节数,就会写入乱码。同样也是通过sleek 可以调整写入位置。 

C语言系统IO,open(),read(),write()_第6张图片

 

 

你可能感兴趣的:(C语言,c++,开发语言)