UNIX不带缓存的IO函数
大多数UNIX文件I/O操作只需用到5个函数:open、read、write、lseek、close,上述五个函数经常被称为不带缓存的I/O;不带缓存指的是每个read和write都调用内核中的一个系统调用;这些不带缓存的I/O函数不是ANSI C的组成部分,但是是POSIX.1和XPG3的组成部分。
下面我们来看看这些函数的应用,打开一个文件,读出1024字节,并输出内容。
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <fcntl.h> 4 #include <unistd.h> 5 int main(int argc, char* argv[]) 6 { 7 int fd, nbytes; 8 char buf[1025]; 9 10 if(argc < 2) 11 { 12 printf("Usage: %s filename\n", argv[0]); 13 exit(0); 14 } 15 if((fd = open(argv[1], O_RDONLY)) < 0) 16 { 17 printf("Error:open %s failed\n", argv[1]); 18 exit(0); 19 } 20 if((nbytes = read(fd, buf, sizeof(buf)) - 1) < 0) 21 { 22 printf("Error:read %s failed\n", argv[1]); 23 exit(0); 24 } 25 buf[1024] = 0; 26 printf("Read %d from %s\n", nbytes, argv[1]); 27 printf("%s\n",buf); 28 return 0; 29 }
UNIX不带缓存的IO函数相关推荐
- 不带缓存的I/O和标准(带缓存的)I/O
首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完 ...
- 【java学习笔记-io流 文件读写和键盘读写】带缓存的输入/输出流和数据输入/输出流
文章目录 字节流类 带缓存的输入/输出流 BufferedReader与BufferedWriter类 下面的例子程序演示了read()方法,从控制台读取字符直到用户键入"q": ...
- linux 带缓存的fwrite,文件IO编程之(六):基于流缓冲 fopen,fwrite,fput
标准IO开发 前面分析的文件IO编程都是基于文件描述符的.这些都是基本的IO控制,是不带缓存的. 这里要讨论的IO操作是基于流缓冲的,它是符合ANSIC的标准IO处理. 标准IO提供流缓冲的目的是尽可 ...
- 带缓冲的IO和不带缓冲的IO
文件操作中有两套函数,一套是C库中的 fopen().fread()-,还有一套是linux的系统调用 open().read()- 虽然都是实现文件操作,但它们之间还是有一些不同.或许在网上 ...
- 入门C语言第二话:函数(上)之锻体篇,带你玩转函数(内有汉诺塔,青蛙跳台阶等经典问题,建议收藏和分享)
文章目录 前言 概念的引入 大纲 一.函数的定义 二.函数的分类 1.库函数 概念引入 库函数的分类 了解五步骤 例1: 1.介绍printf 2.头文件 3.所传参数及其类型 4.返回类型及其返回值 ...
- linux 流函数,标准IO函数库 - 二进制文件IO,流定位,创建临时文件和内存流
1 二进制IO(Binary IO) 在前一篇我们了解了逐字符读写和逐行读写函数. 如果我们在读写二进制文件,希望以此读写整个文件内容,这两个函数虽然可以实现,但是明显会很麻烦且多次循环明显效率很低. ...
- STM8单片机ADC带缓存的连续采样模式
在上一篇文章中说了STM8的ADC连续采样模式,为了提高采样的精度和速率,STM8单片机还提供了带缓存的连续采样模式,也就是说ADC会连续采集8个数据,放在缓存中,读取数据时可以一次从缓存中读取8 ...
- STM8 ADC转换模式-------带缓存的连续模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式. 连续和带缓存的连在连 换模式中,将ADC设为连续模式,该模式是通过置位 ADC_CR1寄存器的 ...
- Unix C语言编写基于IO多路复用的小型并发服务器
背景介绍 如果服务器要同时处理网络上的套接字连接请求和本地的标准输入命令请求,那么如果我们使用accept来接受连接请求,则无法处理标准输入请求;类似地,如果在read中等待一个输入请求,则无法处理网 ...
最新文章
- java methode_Java Method.getTypeParameters方法代码示例
- Struts 2创始人Patrick Lightbody作序推荐
- boost::histogram::detail::static_if用法的测试程序
- 关于C++里面使用set_union,set_intersections、set_merge、set_difference、set_symmetric_difference等函数的使用总结
- 【日本語勉強】日本語四級文法突撃(11~20)
- poj_3628 动态规划
- 计算机平面设计的专业技能,计算机平面设计专业学生技能培养途径
- 应急指挥中心整体建设方案(ppt)
- APP推广什么是cpa,cps,cpm
- PAT乙级真题 1092 最好吃的月饼 C++实现
- 网管服务器系统巡检报告,网络设备巡检报告-20210730125215.docx-原创力文档
- 牛客网——B 遥远的记忆
- 抽35块树莓派新品单片机送给可爱的你们
- 从一循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo“,在5的倍数行打印biz,在7的倍数行打印baz
- 使用 this.$parent 子组件调用父组件方法
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
- 语法长难句-----简单句
- 下载chrome浏览器和火狐浏览器各种版本地址,mark~~~
- python奇数阶乘求和_Python阶乘求和的方法
- 《Tableau数据可视化从入门到精通》之Tableau系列软件概况
热门文章
- webview设置请求时长_41个路口智能识别“公交信号” 66面电子屏告诉您乘公交车优先时长...
- js室内地图开发_如何组件化开发WebGIS系统
- oracle 删除行记录,使用实体框架从oracle数据库中删除记录
- 2018北语c语言程序2答案,北语21春《JAVA语言程序设计》作业2题目【标准答案】...
- docker 镜像 增删改查
- 4.7 什么是深度卷积网络?
- git 应用 branch指针和HEAD指针
- numpy random 模块
- css3光束_html+css3实现3d光线照射文字特效
- pyqt怎么button怎么链接_SEO内部链接怎么优化