文件I/O相关函数如open()函数 ,read()函数,write()函数

  ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

声明:此文章为本人原创,未经本人允许,任何个人和单位不得将本文章用于商业用途

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一人之力,难免疏忽,若有错误,欢迎指正


1.open 函数    打开一个文件     在Linux下,任何事物都是文件()

                     int open(const char* path,int oflag,.../*mode_t mode*/ );

         1.参数一:文件名,可以带路径   【 .  当前目录     ..父目录   / 表示根目录        ./  aaa     表示当前路径下的aaa文件          相对路径:从当前目录开始的路径        如    usr/bin

                                                                                                                                                                                                                      绝对路径 :从硬盘开始的路径  如  C:usr/bin/】

            参数二 :打开文件的方式   

                                                        O_RDONLY                                  只读打开(即打开的文件只能进行读操作)

                                                        O_WRONLY                                 只写打开(即打开的文件只能进行写操作)

                                                        O_RDWR                                      读写打开   (即打开的文件可进行读和写的操作)

                                                        O_EXEC                                        只执行打开(对于可执行文件来说,这个方式让他拥有可以执行的权限)

                           上述四个打开方式只能有一个,可以和下面的一起用,但要用 |  连接。下面的则是选填的

                                                        O_CREAT                                    用于创建文件(在打开的文件不存在时),但创建的时候要指定新文件的权限如0777,0664等

                                                        O_EXEL                                         用于检查创建文件时文件是否已经存在,与O_CREAT同时用,若存在就会报错

            参数三:当文件被创建时就需要写参数三,若只是打开,就不需要写了

   2.返回值   成功返回文件描述符,失败返回-1


2.creat 函数     创建一个新文件

            int  creat(const char* path, mode_t mode);

              

1.函数功能:创建一个文件并以只写的方式打开。如果原来该文件存在,会将这个文件的长度截短为0。
2.返回值 : 成功返回文件描述符,失败返回-1,

3.close函数          关闭文件      

          int close(int fd);

           1.  但是当一个进程终止时,内核会自动关闭打开的文件,所以有时候不需要手动调用close关闭

            2.返回值:成功返回0,失败返回-1

4.lseek  函数            设置文件的偏移量(即文件内的光标位置)

                    int  lseek(int fd, off_t offset, int whence);

                   1.参数一:文件描述符(一般为open的返回值)

                        参数二:偏移的大小(即字节数)

                        参数三:从哪个位置开始偏移    【有三个位置  

                                                                                                  1.(SEEK_SET      文件开头的位置) 

                                                                                                  2.(SEEK_CUR     当前光标的位置)  

                                                                                                  3.(SEEK_END 文件末尾的位置)】      

                     2.返回值   成功   :返回新的文件偏移量 (即从开头开始计算到当前光标位置的字节数)     可以用这点来计算文件大小(int filelen = lseek(fd, 0, SEEK_END);)                                              失败    :返回   -1

5.read 函数    从打开的文件中读取数据

                    int  read(int fd, void *buf, size_t size);

                    1.  从fd中读取size 大小的数据到buf中去

                    2. 参数一:文件描述符  即获取数据的那个文件(一般是open函数的返回值)

                          参数二 : 缓冲区,要读入那块区域

                          参数三: 大小,要读入的数据的大小

                     3. 返回值 成功;  返回读取的数据大小,如果读到了末尾,则返回0   (一是刚好读到文件末,二是size大于文件的大小)

                                             失败: 返回-1

                                                 

6.write 函数   从缓冲区中读取数据到一个文件中去

             int  write(int fd, void *buf, size_t size);

                    1.  从buf中获取size大小数据写到fd中去

                    2. 参数一文件描述符  即写入的那个文件(一般是open函数的返回值)

                            参数二 : 缓冲区,表示从那块区域获取要写的数据(就是read函数的读入缓冲区)

                            参数三: 大小,要写入的数据的大小

                  3.   返回值 :成功;  返回已经写入的数据大小

                                             失败: 返回-1


------------------------------------------------------------------------------------------------------

一人之力,难免疏忽,若有错误,欢迎指正

------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值