linux文件IO操作篇 (一) 非缓冲文件
文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO
它们的接口区别是
非缓冲 open() close() read() write()
缓冲 fopen() fclose() fread() fwrite()
1. 非缓冲文件操作
//规模较小 实时性高 的文件
// 例如串口等高速实时通信
// 0 标准输入,通过终端输入
// 1 标准输出,通过终端输出
// 2 标准错误,系统中存放错误的堆栈
//非缓冲文件操作函数只有2个
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h> ssize_t read(int fildes, void *buf, size_t nbyte);
ssize_t write(int fildes, const void *buf, size_t nbyte);
1.1 read()
//read()用于从文件中将信息读取到指定的内存区域,
//read(文件表示符,内存块指针,内存块大小)文件标识符由open获得。
#include <stdio.h>
#include <string.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h> #define LENGTH 1024 int main(int argc, char const *argv[])
{
char buf[LENGTH] = {};
int fd;
int len; fd = open("./read.c",O_RDONLY);
if(fd < ){
puts("file open fail .");
return -;
}
puts("open success ."); len = read(fd,buf,LENGTH);
if(len != -){
puts("read ok");
if(len == ){
puts("read no.");
}else{
printf("%s\n", buf);}
}
close(fd); return ;
}
1.2 write()
//write()用于将缓存内容写入到文件中。
//ssize_t write(int fildes, const void *buf, size_t nbyte); fildes由open获得
例子:从键盘输入一个字符串,再将该字符串保存到文件中。
#include <stdio.h>
#include <string.h>
#include <unistd.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define LENGTH 10240 int main(int argc, char const *argv[])
{
int fd;
int ret;
char buf[LENGTH] = {};
puts("请输入要保存的信息:"); if((ret = read(,buf,LENGTH)) < ) //从非缓冲标准输入0(键盘)获取数据,read到buf中,
{
perror("读取失败");
return -;
} fd = open("./copy1",O_WRONLY|O_CREAT,); //以创造的方式打开copy1文件
if(fd < )
{
puts("file open faile");
return -;
} if((ret = write(fd,buf,ret)) < ) //将buf中的内容写到文件中。
{
puts("写入失败");
return -;
}
close(fd); //最后关闭文件id。 return ;
}
linux文件IO操作篇 (一) 非缓冲文件的更多相关文章
- linux文件IO操作篇 (二) 缓冲文件
2. 缓冲文件操作 //规模较大 实时性低的文件 //当数据长度快要超过缓冲区的范围时,或者时间周期达到时,数据才被送往指定位置 //需要使用FILE * 作为文件标识符 //stdin 标准输入 / ...
- Linux文件IO操作
来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...
- Linux学习记录--文件IO操作相关系统编程
文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...
- (代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
上一篇讲解了基础文件IO的理论发展,这里结合java看看各项理论的具体实现. 传统IO-intsmaze 传统文件IO操作的基础代码如下: FileInputStream in = new FileI ...
- 9.2 Go 文件IO操作
9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...
- 【UNIX环境高级编程】文件 IO 操作 一 ( open | close | creat | lseek | write | read )
博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) op ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- imx6用文件io操作gpio
具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...
- 文件IO操作
前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...
随机推荐
- siebel学习笔记-应用/数据访问控制
应用/数据访问控制Siebel提供的两种主要的访问控制方式在View级别和Data(record)级别: 1.View级别的访问控制:一个企业通常按照功能进行工作的区分,分配给一个用户的功能决定了他能 ...
- win7 下vs2008试用版破解
用过微软的开发套件Visual Studio 2008,如果用的是试用版本,超过90天,就会过期,出现下面这张图片显示的 下面介绍破解的步骤: 1.首先打开控制面板——然后找到卸载或更改程序——然后找 ...
- 一个程序猿试用有道云笔记VIP功能体验
熟悉我的朋友应该知道,我有一个微信公众号,叫做"汪子熙", 我会定期在上面推送技术文章. 而我绝大多数技术文章都是在每天上下班的地铁上用手机写的,然后到家后同步到电脑上,进行发表. ...
- Android(java)学习笔记42:Map集合的获取功能
1. Map集合的获取功能: package cn.itcast_01; import java.util.Collection; import java.util.HashMap; import ...
- JavaMail简单应用
版权声明:本文为博主原创文章,未经博主同意不得转载. --caicongyang https://blog.csdn.net/caicongyang/article/details/33731395 ...
- SQL SERVER 2012断日志
有一个SQL2012库的日志达到了100G左右,平时开发人员根本没有做过事务日志备份,而磁盘空间已经快满了.所以,只能截断它.但是,由于从2K8以后,SQL SERVER好像不再提供 truncate ...
- fast、faster中ap值的计算
def voc_ap(rec, prec, use_07_metric=False): """ ap = voc_ap(rec, prec, [use_07_metric ...
- samb共享
1. 2. 3. ssh root@192.168.10.1 cd /etc smbpasswd -a root 在提示下创建新密码即可 4. 在Mac下的finder内使用快捷键command + ...
- 转载 【MySql】Update批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...
- 使用百度新闻RSS
function getbaidu() { $result=""; //RSS源地址列表数组 $rssfeed = array("http://news.baidu.co ...