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

c语言系统IO

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

open()

 简单打开文件:

 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这个参数,这是代表文件的权限。

权限分为三组:

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

read()

简单示例:

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

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

头文件:<unistd.h>

参数:

fd :文件标识符

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

count:想要读取字节数

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

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

 write()

 头文件:<unistd.h>

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

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

参数:

fd:文件标识符

buf:写入的数据

count:写入的字节数

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值