Linux系统编程之常用的几个API之read、lseek、creat

上一篇博文说到了open和write函数,这一篇继续来说一下剩下的几个API,分别是read、lseek和creat。

1.read函数
原型是:

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

read函数的返回值是读取到的字节数(即count),fd为文件描述符,count是读取到的字节数,
buf是字节缓冲区。
read函数的含义是:从fd所指向的文件中读取count个字节的内容存到字节缓冲区buf去。

重要提示:
在使用read函数时,一定要注意文件光标的位置,如果正常打开一个文件,并写进内容的话,如果还没关闭这个文件,那么此时的光标就在写进的内容的尾巴处,如果打开一个文件,并关闭了这个文件,那么此时的光标位置就在开始的地方。如果在调用read函数读取文件时,如果要重新执行一遍打开关闭文件的操作使光标跑到最开始的地方去的话,这样是非常low的,那么有什么办法不用这样也能使光标发生移动的吗,很好的一个办法就是使用lseek函数

直接上代码:
(1)我们先来看一下用打开关闭一个文件的方式来使光标跑到初始位置的代码

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
   
        //ssize_t write(int fd, const void *buf, size_t count);
        int fd;
        int n_write;
        int n_read;
        char *buf = "Hello world!";
        char *readBuf;

        fd = open("./file1",O_RDWR);
        printf("fd = %d\n",fd);
        if(fd == -1)
        {
   
                printf("fail to open the file1!\n");
                fd = open("./file1",O_RDWR|O_CREAT,0600);

                if(fd > 0)
                {
   
                        puts("Success to open the file1!");
                }
        }
        printf("fd = %d\n",fd);
        //write(fd,buf,sizeof(buf));
        n_write = write(fd,buf,strlen(buf));
        close(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值