linux文件拷贝函数,linux:文件操作函数(open,close,read,write)
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)相关推荐
- Day53 Linux setitimer函数 信号集操作函数 信号捕捉 SIGCHLD信号
目录 setitimer函数 信号集操作函数 1.信号集设定 2.igprocmask函数 3.sigpending函数 信号捕捉 1.signal函数 2.sigaction函数 SIGCHLD信号 ...
- asp系统转换php系统时间函数,ASP_ASP中的时间函数大全 时间操作函数,Date 函数 描述:返回当前系统日 - phpStudy...
ASP中的时间函数大全 时间操作函数 Date 函数 描述:返回当前系统日期. 语法:Date DateAdd 函数 描述:返回已添加指定时间间隔的日期. 语法:DateAdd(interval, n ...
- 将windows系统主机上的文件拷贝到Linux系统中;将Linux系统中的文件粘贴到Windows主机中
本篇文章主要实现将windows主机上的文件复制到Linux服务器上,这里为了方便演示,我举例放在C盘中的一个test101.py文件,现在我要将它放在Linux系统的home下的shao目录下. 首 ...
- 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 ...
- Linux中拷贝和移动文件
拷贝和移动文件 序号 命令 对应英文 作用 01 tree [目录名] tree 以树状图列出文件目录结构 02 cp 源文件 目标文件 copy 复制文件或目录 03 mv 源文件 目标文件 mov ...
- linux 零拷贝goodlen,linux零拷贝技术
简介零复制(英语:Zero-copy:也译零拷贝)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域.这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽. 零拷贝操作 ...
- 字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...
本帖最后由 奉聪 于 2017-1-25 14:54 编辑 *******前言******* 我数一下,我发了几个帖子,1.2.3? 哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步! ...
- 服务器不知道循环生成文件,Windows服务器下PowerShell命令往服务器共享文件夹进行文件拷贝、循环文件重命名...
由于项目需要,接触到了PowerShell命令,但是苦于以前没有接触过,几句话的代码百度搜索了很长时间. 主要功能是Windows服务器下利用PowerShell命令实现文件拷贝.文件重命名(去掉文件 ...
- 公司服务器文件拷贝痕迹,服务器文件拷贝监控
服务器文件拷贝监控 内容精选 换一换 在FusionInsight Manager软件安装及使用过程中,针对Tomcat基于开源做了如下功能增强:升级Tomcat版本为官方稳定版本.设置应用程序web ...
- java文件拷贝_Java实现文件拷贝的4种方法
第一种方法:古老的方式 public static long forJava(File f1,File f2) throws Exception{ long time=new Date().getTi ...
最新文章
- ORACLE 字符串函数用法(转载)
- 递归生成全排列【C/C++】
- NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务
- python 程序开发以及推荐机制设计
- 运算符重载(c++细节篇二)
- vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
- 高性能最终一致性框架Ray之基本概念原理
- drools。drools_Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明
- 服务网格:Istio和AWS App Mesh
- LeetCode —— 71.简化路径(Python3)
- sparkstreaming监听hdfs目录如何终止_HDFS—HA高可用详解
- DB pivot unpivot
- 运营商大数据的市场价值有哪些
- 异地恋?我做了一个恋爱积分器
- VMware虚拟机下载及Ubuntu安装指南
- 回首2017,展望2018
- python股票网格交易法详解_详解网格交易法
- 快狗打车CTO沈剑:怕什么技术无穷尽?进一寸有一寸的欢喜
- python小模块----cookie
- 制作一套适用于Oracle数据库的县及县以上行政区划数据
热门文章
- 计算音频数据音量_【翻译】线性的音量推子……简直像一个个秤砣!
- labview叠加白噪声_振荡器的相位噪声模型
- linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
- 二叉树的二叉链表存储结构构建以及先序遍历
- Weka学习一(分类器算法)
- stm32 DMA 配置 串口程序
- 数据结构-二叉树面试 常考
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
- grub光盘修复,硬盘修复
- 移动数据平台mParticle获1750万美元B轮融资,帮助企业快速获取客户数据