UNIX 输入和输出

Unix环境高级编程---基础知识 阅读详情

1、文件描述符

     1)顺序分配的非负整数

     2)内核用以标识一个特定进程正在访问的文件

     3)其他资源(socket、pipe)的访问标识

2、标准输入、标准输出和标准出错     

       stdio stdout stderr

       由shell默认打开,分别为 0\1\2

3、不用缓存的I\O

     1)通过文件描述符进行访问

     2)文件I\O: open read write close lseek

4、标准I\O

    1)  通过FILE*进行访问

    2)printf  fprintf fopen fread fwrite fseek fclose

      标准I\O 库由ANSIC标准说明。

 

标准I\O :

         流和FILE对象:

                          标准I\O库的所有操作都是围绕流(stream)来进行的,在标准I\O中,流用FILE*来描述。

         流(stream): 分为文本流和二进制流

                                文本流: 在处理中数据以字符出现。  "\n" -> CR blabla ....

                                二进制流:流中处理的是二进制序列。字符用ascii码表示。   

         文件缓冲:

                        缓冲文件系统(高级磁盘I\O):

                                  目的:尽量减少文件I/O的调用

                                  分类: 全缓冲、行缓冲(遇到"\n"输出)、不缓冲(stderr)

                               使用setbuf()和setvbuf()可以更改缓存类型,在任意时刻,可以使用fflush强制刷新一个数据流,使缓存数据刷新到内核。

                        非缓冲文件系统(低级磁盘I\O) 文件I/O没有缓存

 

                                  依靠操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出。

标准流的一些操作: freopen函数支持文件流的重定向

                               

             FILE *fopen(const char *path, const char *mode);

             FILE *fdopen(int fd, const char *mode);

             FILE *freopen(const char *path, const char *mode, FILE *stream);

 

mode:

 

打开一个标准I/O流的六种不同方式:

限制rwar+w+a+

文件已经存在

?  ?  
擦出文件以前的内容 ?  ? 
流可以读?  ???
流可以写 ?????

流只可在尾端处写

  ?  ?

fopen要求文件具有0666的权限。 可以通过(0666 &~umask )修改文件的权限 ,或则在bash中使用chmod 命令。

ulimit -a 命令可以查看和修改最大文件数

fclose用于关闭一个已经打开的文件流:

fclose()调用成功返回0,失败返回EOF,并设置errno。

在该文件被关闭之前,刷新缓存中的数据。如果标准I/O库已经为该流自动分配了一个缓存,则释放此缓存。

当一个进程正常终止时(直接调用exit函数,或从main函数返回)则所有带未写缓存数据的标准I/O流都被刷新,所有打开的标准I\O流都被关闭。

 

读写流:

           每次一个字符的I/O。fgetc()/fputc()

           每次一行的I/O。fgets()feputs()。当调用fgets时,应说明能处理的最大行长

           直接I/O。fread fwrite。可指定读写长度,常用于从二进制文件中读写一个结构

读写流结束判断:

           feof()判断文件是否结束

检查文件出错函数;

       #include <stdio.h>

       void clearerr(FILE *stream);

       int feof(FILE *stream);

       int ferror(FILE *stream);

       int fileno(FILE *stream)

定位流;

       #include <stdio.h>

       int fseek(FILE *stream, long offset, int whence);

       long ftell(FILE *stream);

       void rewind(FILE *stream);

       int fgetpos(FILE *stream, fpos_t *pos);
       int fsetpos(FILE *stream, fpos_t *pos);

 

 

 

 

 

 

UNIX系统编程小结:文件输入输出 在实际编程中,还可以使用更高级的文件I/O函数,如fopen()、fread()、fwrite()和fclose(),它们提供了更方便的接口来处理文件操作。文件描述符是一个非负整数,用于标识打开的文件。其中,fd参数是要读取的文件描述符,buf参数是要读取数据的缓冲区,count参数是要读取的字节数。其中,path参数是要打开的文件的路径,flags参数指定了打开文件的方式和属性,例如读取、写入、追加等。其中,fd参数是要写入的文件描述符,buf参数是要写入的数据的缓冲区,count参数是要写入的字节数。 阅读详情

相关推荐

掌握UNIX标准输入输出重定向与管道技术

本文深入探讨了UNIX系统中标准输入输出(I/O)重定向和管道的概念、用法和技巧。通过分析标准输入、标准输出和标准错误的概念,以及文件描述符的作用,文章为读者展示了如何有效地利用重定向操作符来控制数据流。此外,本文还介绍了如何结合使用管道和tee命令来优化命令的执行和输出管理。

weixin_34064233的博客 487

UNIX下实现终端打印的几种方法

目前,国内银行业大部分计算机应用系统都在UNIX操作系统平台上采用终端业务数据录入、业务数据打印方式进行前端业务处理。笔者将UNIX下实现终端打印的几种方法介绍如下: 一、概述 UNIX环境下终端打印是在操作系统的支持下,使用终端自身提供的功能,用命令或程序实现终端打印。具体过程是:在终端上执行打印控制命令使终端进入打印状态,并通知打印机做好准备,在终端上输入要打印文件的文件名进行打印。打印完毕,

大史记#阎王本纪的专栏 1089

Origin绘制带差异显著性标记的分组均值条形图|科研论文图表教程(附数据格式模板)

传统柱状图虽能呈现组间均值差异,却隐藏个体数据分布;散点图虽能展示原始数据,却难以直观凸显统计显著性。带差异显著性(*)的分组均值条形图——它以“双层叙事”的创新设计,同时呈现群体特征与个体差异。

weixin_50236590的博客 1493

UNIX基础知识之输入和输出

一、文件描述符   文件描述符(file descriptor)通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。在读、写文件时,就可以使用它。 二、标准输入、标准输出和标准出错   按惯例,每当运行一个新程序时,所有的shell都会为其打开三个文件描述符:标准输入(standard input)、标准输出(sta...

weixin_34327223的博客 209

Vertx之Grpc消息发送

介绍 Vert.x gRPC 模块,它将 Google gRPC 的编程风格与 Vert.x 风格保持一致. gRPC 是一个高性能、开源、通用的RPC框架,是一种进程间通讯技术,由Google推出,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。 在gRPC客户端可以直接调用不同服务器上的远程程序,使用姿势看起来就像调用本地程序一样,轻松的实现远端服务的连接、

Lance 1188

nnDetection实战:手把手教你用Python在自家电脑上跑通第一个肺结节检测模型

本文详细介绍了如何使用nnDetection框架在普通电脑上实现肺结节检测模型的搭建与运行。从环境配置、数据预处理到模型训练与推理,手把手教你完成医学图像检测的全流程,特别适合初学者入门医学AI领域。

weixin_32377497的博客 330

UNIX环境C语言编程(15)-终端IO

概述 特殊的输入字符及stty命令 终端窗口大小变更

justkk的专栏 965

【已解决】如何在服务器中下载huggingface模型,解决huggingface无法连接

在服务器上使用huggingface模型时,如果直接指定模型名称,用AutoTokenizer.from_pretrained(“model_name”),可能会由于网络原因会报错 Failed to connect to huggingface.co port 443 after 75018 ms: Operation time out因此我们需要下载模型到服务器上,得到模型本地的路径model_dir,再通过AutoTokenizer.from_pretrained(model_dir)方式来使用。

a61022706的博客 4万+

unix环境高级编程-输入和输出

文件描述符:这通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件,当内核打开一个现有文件或创建一个新文件时,都返回一个文件描述符,在读写这个文件时,可以使用这个文件描述符 标准输入、标准输出和标准错误 每当运行一个新程序时,所有的shell都为其打开三个文件描述符。如果不做特殊处理,则这三个描述符都连接向终端。大多数shell都提供一个方法,使其中任何一个或所有三个描述符都能重新定

hahachenchen789的博客 465

LSF0108 level shift设计使用及debug流程

目录 初版设计 测试出现的问题1 解决问题(尝试1) 测试出现的问题2 解决问题2-1 解决问题2-2 单Port测试结果 所有Port均连接测试结果 初版设计 此电路的应用场景在于将LCD屏幕连接到FPGA上,进而通过FPGA中设计的硬件电路来驱动LCD屏幕,验证数字硬件电路设计的正确性。因此需要一个转接板位于FPGA和LCD屏幕之间,将二者连接起来。 转接板的硬件电路设计主要存在以下需求: 实现3.3V和1.8V之间的同时双向逻辑转换(LCD屏幕电平为3.3V,FPGA电平为1.

moshanghongfeng的博客 7562

告别Link180!在Ansys Mechanical 2020R2中正确启用Cable280绳索单元(附Beta选项开启指南)

本文详细介绍了在Ansys Mechanical 2020R2中启用Cable280绳索单元的全过程,包括Beta选项的开启步骤、建模技巧及高阶应用。Cable280作为专为绳索仿真设计的单元,相比传统的Link180单元,在大变形模拟和计算效率上表现更优,特别适合斜拉桥、电梯牵引绳等工程场景。

weixin_33711647的博客 405

Unix 输入和输出

NIX系统shell使用文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错相关联。这是各种shell以及很多应用程序使用的惯例,而与UNIX内核无关,如果不遵守这种惯例,那么很多UNIX系统应用程序就不能正常工作。   在依从POSIX的应用程序中,幻数0、1、2应当替换成符号常量       STDIN_FILENO,       STDOUT

天涯流浪客的专栏 2243

大模型——AI对话四象限

{ "摘要": "文章揭示了90%的人不会有效与AI沟通的问题,指出简单粗暴的提问只能得到标准答案。作者提出'AI对话四象限'模型:1)双方都懂时提效;2)AI懂但需学会分层提问;3)共同探索未知领域;4)向AI传授独家知识。强调沟通技巧的重要性,认为会提问的人不会被AI替代。最后呼吁读者尝试四象限思维,与AI碰撞火花。" }

311

在Linux和UNIX中有很多的输入输出函数,

在Linux和UNIX中有很多的输入输出函数,有时真是让想跟它攀点关系的菜鸟们束手无策。先来看看都有哪些函数,通过解析与总结,看看能不能让大家能这些函数有个理性的认识,哦,原来是这么回事,也就算我没白花这份闲。 内核文件I/O->标准库I/O->高级I/O->IPC中 1. read()/write(); 2. pread()/pwrite(); 3. getc()/putc(); 4.

yuanran460286147的专栏 629

YOLO11实战优化:长尾分布解决 | 引入Seesaw Loss配合YOLO11分类头,完美应对类别极其不平衡的现实业务场景

摘要: YOLO11在工业缺陷检测等长尾分布场景中面临尾部类别检测失效的问题,根源在于头部类别样本的负样本梯度压制了尾部类别的学习。传统方法如重采样、Focal Loss等效果有限。Seesaw Loss通过动态调整缓解因子和补偿因子,平衡类别间的梯度分布,结合YOLO11的解耦分类头、Anchor-Free设计和C2PSA/C3K2模块,显著提升尾部类别识别能力。文章详细解析了Seesaw Loss的数学原理,并提供了可直接集成到YOLO11的PyTorch实现代码,为长尾分布下的目标检测提供了实用解决方

2601_95807009的博客 252

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《UNIX环境高级编程(第3版)》——1.5 输入和输出

本节书摘来自异步社区《UNIX环境高级编程(第3版)》一书中的第1章,第1.5节,作者:【美】W. Richard Stevens , Stephen A.Rago著,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.5 输入和输出 1.文件描述符文件描述符(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的...

weixin_34377919的博客 93

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

操作系统可被定义为一种软件,它控制计算机硬件资源,提供程序运行的环境。我们通常将这种软件称为内核(kernel),因为它相对较小,而且位于环境的核心。内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用程序可以使用公用函数库提供的接口,也可以使用内核提供的接口(系统调用)。shell 是一个特殊的应用程序,为运行其他应用程序提供了一个接口。

天道酬勤 2655

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Unix/Linux编程:分散输入和集中输出------readv() 、 writev()

limits.h>

木牛的博客 235

输入和输出(UNIX环境高级编程笔记)

文件描述符通常是一个小的非负整数,内核用以表示一个特定进程正在访问的文件。当内核打开一个现有文件或者创建一个新文件时,它都返回一个文件描述符。在读、写文件时,可以使用这个文件描述符。 //main.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define BUFFSIZE ...

The_perfect_world的博客 167

INS初始对准核心:双矢量定姿原理与嵌入式实操

惯性导航系统(INS)的初始对准是导航解算的首要前提,其本质是建立载体坐标系与导航坐标系之间的精确姿态映射关系。该过程不依赖外部信号,关键依靠重力矢量和地球自转角速度矢量这两个天然、稳定、可观测的物理基准,通过几何约束联合求解俯仰、横滚与航向三轴姿态角。双矢量定姿既克服了单用重力无法确定航向的固有缺陷,又规避了仅靠地球自转在非水平状态下姿态不可解的数学困境,构成静止条件下最小完备的姿态可观测系统。其技术价值体现在高鲁棒性、零外部依赖及嵌入式实时可行性,广泛应用于无人机、无人艇、机载POS及工业AGV等无GN

weixin_34409357的博客 338

Unix环境高级编程-学习-01-输入和输出

本文介绍Unix环境高级编程-学习-01-输入和输出的相关概念,使用多种方法实现操作系统cp命令,实验对比效率,包含C源码和makefile文件。

qq_45111959的博客 325

unix c语言 标准输出重定向,UNIX 输入/输出重定向

输入/输出重定向大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。输出重定向一个命令的输出通常用于标准输出,也可以很容易地将输出转移到一个文件。这种能力被称为输出重定向:如果记号 > file 添加到任何命令,这些命令...

weixin_36018494的博客 545

Unix系统编程():分散输入和集中输出(Scatter-Gather IO):readv和writev

分散输入和集中输出(Scatter-Gather IO):readv和writev   请问这个v又代表什么?   readv和writev系统调用分别实现了分散输入和集中输出的功能。   #include&lt;sys/uio.h&gt;   ssize_t readv(int fd, const struct iovec *iov, int invcnt); ssize_...

weixin_33937913的博客 166
上一篇: unix文件基础
下一篇: 文件I/O
Noneghost
博客等级 码龄10年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值