1. open()函数

功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。

所需头文件:#include ,#include ,#include (我们用的时候只需要引用这个头文件)

函数原型:int

open(const char *pathname,int

flags)

/ int

open(const char *pathname,int flags,int perms)

参数:pathname:被打开的文件名(可包括路径名如"dev/ttyS0");

flags:文件打开方式.

O_RDONLY:以只读方式打开文件

O_WRONLY:以只写方式打开文件

O_RDWR:以读写方式打开文件

O_CREAT:如果改文件不存在,就创建一个新的文件,并用第三个参数为其设置权限

O_EXCL:如果使用O_CREAT时文件存在,则返回错误消息。这一参数可测试文件是否存在。此时open是原子操作,防止多个进程同时创建同一个文件

O_NOCTTY:使用本参数时,若文件为终端,那么该终端不会成为调用open()的那个进程的控制终端

O_TRUNC:若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0

O_APPEND:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,即将写入的数据添加到文件的末尾

O_NONBLOCK:

如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I/O操作设置非阻塞方式。

O_SYNC:使每次write都等到物理I/O操作完成。

O_RSYNC:read 等待所有写入同一区域的写操作完成后再进行

在open()函数中,falgs参数可以通过“|”组合构成,但前3个标准常量(O_RDONLY,O_WRONLY,和O_RDWR)不能互相组合。

perms:被打开文件的存取权限,可以用两种方法表示,可以用一组宏定义:S_I(R/W/X)(USR/GRP/OTH),其中R/W/X表示读写执行权限.(USR/GRP/OTH分别表示文件的所有者/文件所属组/其他用户)

返回值:成功:返回文件描述符; 失败:返回-1

2. close()函数

功能描述:用于关闭一个被打开的的文件

所需头文件: #include

函数原型:int

close(int fd)

参数:fd文件描述符

返回值:0成功,-1出错

3. read()函数

功能描述: 从文件读取数据。

所需头文件: #include

函数原型:ssize_t read(int fd, void *buf, size_t

count);

参数: fd: 将要读取数据的文件描述词。buf:指缓冲区,即读取的数据会被放到这个缓冲区中去。count:

表示调用一次read操作,应该读多少数量的字符。

返回值:返回所读取的实际字节数;0(读到EOF);-1(出错)。

以下几种情况会导致读取到的字节数小于 count :

A.

读取普通文件时,读到文件末尾还不够 count 字节。例如:如果文件只有

30 字节,而我们想读取 100

字节,那么实际读到的只有 30 字节,read 函数返回 30 。此时再使用 read 函数作用于这个文件会导致 read 返回 0

B.

从终端设备(terminal device)读取时,一般情况下每次只能读取一行。

C.

从网络读取时,网络缓存可能导致读取的字节数小于 count字节。

D.

读取 pipe 或者 FIFO 时,pipe 或 FIFO

里的字节数可能小于 count 。

E.

从面向记录(record-oriented)的设备读取时,某些面向记录的设备(如磁带)每次最多只能返回一个记录。

F.

在读取了部分数据时被信号中断。

读操作始于 cfo 。在成功返回之前,cfo 增加,增量为实际读取到的字节数。

4. write()函数

功能描述: 向文件写入数据。

所需头文件: #include

函数原型:ssize_t

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

返回值:写入文件的字节数(成功);-1(出错)

功能:write 函数向 filedes 中写入 count

字节数据,数据来源为 buf 。返回值一般等于

count,否则就是出错了。常见的出错原因是磁盘空间满了或者超过了文件大小限制。

对于普通文件,写操作始于 cfo 。如果打开文件时使用了 O_APPEND,则每次写操作都将数据写入文件末尾。成功写入后,cfo

增加,增量为实际写入的字节数。

接下来我们来一起用一用这些函数

(1)以写方式创建打开一个文件,0600代表用户的权限,我们可以对文件进行读(4)和写(2)操作

write(),在file.txt中写“hello”,写入字节数为5

打开file.txt,可以看到hello被写入

(2)以读方式打开文件,文件打开成功,往buff里读127个字节(如果我们读128实际存在比128个字节长,那么\0没处放了,所以这里我们读127.)

(3).我们可以用read和write结合完成一个拷贝操作,

读写操作结合完成拷贝passwd,拷贝后名为newpasswd. 读一部分写一部分,通过read返回值为0判断读完,结束。

拷贝成功,大小和原passwd一样大.

linux文件拷贝函数,linux:文件操作函数(open,close,read,write)相关推荐

  1. Day53 Linux setitimer函数 信号集操作函数 信号捕捉 SIGCHLD信号

    目录 setitimer函数 信号集操作函数 1.信号集设定 2.igprocmask函数 3.sigpending函数 信号捕捉 1.signal函数 2.sigaction函数 SIGCHLD信号 ...

  2. asp系统转换php系统时间函数,ASP_ASP中的时间函数大全 时间操作函数,Date 函数 描述:返回当前系统日 - phpStudy...

    ASP中的时间函数大全 时间操作函数 Date 函数 描述:返回当前系统日期. 语法:Date DateAdd 函数 描述:返回已添加指定时间间隔的日期. 语法:DateAdd(interval, n ...

  3. 将windows系统主机上的文件拷贝到Linux系统中;将Linux系统中的文件粘贴到Windows主机中

    本篇文章主要实现将windows主机上的文件复制到Linux服务器上,这里为了方便演示,我举例放在C盘中的一个test101.py文件,现在我要将它放在Linux系统的home下的shao目录下. 首 ...

  4. linux i2c子系统代码分析3 ---操作函数i2c_add_adapter i2c_add_numbered_adapter介绍

    二.i2c子系统操作函数,i2c-core.c 1. kernel/driver/linux/i2c/i2c-core.c /**  * i2c_add_adapter - declare i2c a ...

  5. Linux中拷贝和移动文件

    拷贝和移动文件 序号 命令 对应英文 作用 01 tree [目录名] tree 以树状图列出文件目录结构 02 cp 源文件 目标文件 copy 复制文件或目录 03 mv 源文件 目标文件 mov ...

  6. linux 零拷贝goodlen,linux零拷贝技术

    简介零复制(英语:Zero-copy:也译零拷贝)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域.这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽. 零拷贝操作 ...

  7. 字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...

    本帖最后由 奉聪 于 2017-1-25 14:54 编辑 *******前言******* 我数一下,我发了几个帖子,1.2.3? 哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步! ...

  8. 服务器不知道循环生成文件,Windows服务器下PowerShell命令往服务器共享文件夹进行文件拷贝、循环文件重命名...

    由于项目需要,接触到了PowerShell命令,但是苦于以前没有接触过,几句话的代码百度搜索了很长时间. 主要功能是Windows服务器下利用PowerShell命令实现文件拷贝.文件重命名(去掉文件 ...

  9. 公司服务器文件拷贝痕迹,服务器文件拷贝监控

    服务器文件拷贝监控 内容精选 换一换 在FusionInsight Manager软件安装及使用过程中,针对Tomcat基于开源做了如下功能增强:升级Tomcat版本为官方稳定版本.设置应用程序web ...

  10. java文件拷贝_Java实现文件拷贝的4种方法

    第一种方法:古老的方式 public static long forJava(File f1,File f2) throws Exception{ long time=new Date().getTi ...

最新文章

  1. ORACLE 字符串函数用法(转载)
  2. 递归生成全排列【C/C++】
  3. NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务
  4. python 程序开发以及推荐机制设计
  5. 运算符重载(c++细节篇二)
  6. vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
  7. 高性能最终一致性框架Ray之基本概念原理
  8. drools。drools_Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明
  9. 服务网格:Istio和AWS App Mesh
  10. LeetCode —— 71.简化路径(Python3)
  11. sparkstreaming监听hdfs目录如何终止_HDFS—HA高可用详解
  12. DB pivot unpivot
  13. 运营商大数据的市场价值有哪些
  14. 异地恋?我做了一个恋爱积分器
  15. VMware虚拟机下载及Ubuntu安装指南
  16. 回首2017,展望2018
  17. python股票网格交易法详解_详解网格交易法
  18. 快狗打车CTO沈剑:怕什么技术无穷尽?进一寸有一寸的欢喜
  19. python小模块----cookie
  20. 制作一套适用于Oracle数据库的县及县以上行政区划数据

热门文章

  1. 计算音频数据音量_【翻译】线性的音量推子……简直像一个个秤砣!
  2. labview叠加白噪声_振荡器的相位噪声模型
  3. linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
  4. 二叉树的二叉链表存储结构构建以及先序遍历
  5. Weka学习一(分类器算法)
  6. stm32 DMA 配置 串口程序
  7. 数据结构-二叉树面试 常考
  8. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
  9. grub光盘修复,硬盘修复
  10. 移动数据平台mParticle获1750万美元B轮融资,帮助企业快速获取客户数据