Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何有效地从需要查找的stdin管道数据中读取

如何有效地从需要查找的stdin管道数据中读取
EN

Stack Overflow用户
提问于 2012-05-07 03:15:07
回答 3查看 2.2K关注 0票数 3

我正在寻找C编程中从stdin管道读取数据的最佳方法。

问题:我需要查找这些数据(在这个流的末尾读取一些数据后,我需要从流的开头读取数据)。

小用例:gunzip -c 4GbDataFile.gz | myprogram

另一个:

  1. 本地主机:nc -l -p 1234 | myprogram
  2. 远程主机:gunzip -c 4GbDataFile.gz | nc -q 0 theotherhost 1234

我知道从fifo中读取只能完成一次。因此,目前:

  • stdin 到内存,然后从这个分配的内存开始工作。

很丑,但很管用。一个明显的问题是,如果有人向我的应用程序发送一个巨大的(或连续的)流,我将以一个大的分配内存块结束,否则我将耗尽内存。(想想一个8Gb的文件)

我接下来想的是:

  • 我设置了这个内存块的大小限制(可能是用户定义的)。一旦我从stdin:上读了这么多数据
    1. 要么我在这里停下来:"Errr.内存不足,bazinga.算了吧。“风格。
    2. 要么启动卸载,将正在将读取到文件中的内容转储到文件中,然后在读取所有数据后从该文件中工作。

但那又有什么意义呢?我无法找到我正在阅读的数据的来源。如果这是一个本地的8Gb文件,我将把它转储到同一个系统上的另一个8Gb文件中。

所以,我的问题是:

当您必须在管道中来回查找时,如何有效地读取stdin管道中的大量stdin数据?

提前谢谢你的回答。

编辑:

我的程序需要在给定文件中的某个地方(取决于文件格式)读取元数据,以便可能在流的末尾读取元数据。然后,它可以在流开始时读取其他数据,然后在另一个地方读取等等。简而言之:它需要访问数据的任何字节。

例如,在开始从stdin读取之前,在不知道文件格式的情况下读取归档文件的数据:我需要检查归档元数据,查找归档文件的名称和偏移等。

,所以我将在本地复制stdin内容并从中工作。谢谢大家的投入;)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-07 03:35:15

4GbDataFile中的数据结构并不适合您想要做的事情。跳出框框思考。不要把你的程序敲成它根本不应该尝试的东西。尝试修复生成输入格式的位置,这样您就不需要返回4GB。

如果您喜欢锤击: 4GB的核心内存是相当昂贵的。相反,将从stdin读取的数据保存在一个文件中,然后打开该文件(或mmap ),然后查找到您心中的内容。

票数 0
EN

Stack Overflow用户

发布于 2012-05-07 03:27:12

你需要弄清楚你的要求。如果您需要 from (),那么显然不能从stdin获取输入。如果您需要 file (),那么应该以输入文件名作为参数。

票数 1
EN

Stack Overflow用户

发布于 2012-05-07 04:11:44

我想你应该看看声名狼藉的无用使用猫奖

TL;DR:将cat 4gbfile | yourprogram改为yourprogram < 4gbfile

如果您确实坚持让它处理管道中的数据,那么您必须在启动时将其存储在一个临时文件中,然后使用dup2将文件描述符0替换为临时文件的fd副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10481093

复制
相关文章
Python Numpy 从文件中读取数据
测试文件内容(test1.txt) hello,123,nihao 8,9,10 io,he,no 测试代码 import numpy # dtype:默认读取数据类型,delimiter:分隔符 world_alcohol = numpy.genfromtxt("test1.txt", dtype=str, delimiter=",") # 数据结构 print(type(world_alcohol)) # 数据内容 print(world_alcohol) # 帮助文档 print(help(nump
山海散人
2021/03/03
4.3K0
matlab读取mnist数据集(c语言从文件中读取数据)
mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。
全栈程序员站长
2022/08/01
5K0
matlab读取mnist数据集(c语言从文件中读取数据)
用Pandas从HTML网页中读取数据
本文,我们将通过几步演示如何用Pandas的read_html函数从HTML页面中抓取数据。首先,一个简单的示例,我们将用Pandas从字符串中读入HTML;然后,我们将用一些示例,说明如何从Wikipedia的页面中读取数据。
老齐
2020/05/15
9.6K0
用Pandas从HTML网页中读取数据
如何使用python读取txt文件中的数据
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139037.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/02
6.8K0
如何从 Ring Buffer 读取?
原文地址:http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-how-do-i-read-from.html​​ 作者是 Trisha Gee, LMAX 公司的一位女工程师。 这是理解 LMAX​ 开发的 Disruptor 模式​ 系列博客的下一篇。 从 上一篇博客​ 我们都明白了什么是 Ring Buffer 以及 它有多棒。遗憾的是,我还没有提到当你实际使用 Disruptor 时,怎样读写数据。 ConsumerBarrier 与
张善友
2018/01/29
2K0
如何从 Ring Buffer 读取?
CAT客户端如何从Apollo中读取配置?
以下就是这个示例的运行环境,如果版本号不一样,区别也应该不会很大,可以根据实际情况做相应调整。
万猫学社
2022/04/22
3.7K0
CAT客户端如何从Apollo中读取配置?
java pfx,如何从Java中的PFX文件读取公钥[通俗易懂]
I am able to read private key from PFX file but not public key. I am using following code to read public key.
全栈程序员站长
2022/08/14
4.8K0
如何从Node.js中的命令行读取输入
您是否正在使用Node.js中开发一个小的CLI工具,并希望能够提示用户从命令行输入输入? Node.js正是为此目的提供了readline模块。 它提供了一个接口,用于从可读流(例如process.stdin)中一次读取一行数据。
ccf19881030
2020/10/26
8.6K0
【说站】Python中JSON数据如何读取
2、由直接从JSON文件读写的JSON函数组成。Python内置JSON包,是标准库的一部分,不需要安装。
很酷的站长
2022/11/24
2.1K0
【说站】Python中JSON数据如何读取
父子管道更有效地扩展应用及其存储库结构
随着应用程序及其存储库结构的复杂性增加,存储库中.gitlab-ci.yml文件变得难以管理。对于越来越流行的“ monorepo ”模式,此问题尤其重要,在该模式下,团队将用于多个相关服务的代码保存在一个存储库中。当前,当使用这种模式时,开发人员都使用同一.gitlab-ci.yml文件来为不同的应用程序组件触发不同的自动化过程,这可能会导致合并冲突和生产率下降,而团队则在等待管道“其一部分”的运行和完成。
DevOps云学堂
2020/07/27
1.6K0
如何用R语言从网上读取多样格式数据
生活中,我们面临着各种各样的数据:比如你的成绩单,比如公司的财务报表,比如朋友圈的一些状态,比如微信里的一段语音……我们生活的大数据时代的一个重要特征便是数据的多样化(variety)。
机器学习AI算法工程
2018/03/14
7K0
如何用R语言从网上读取多样格式数据
如何同时从多个文本文件读取数据
在很多时候,需要对多个文件进行同样的或者相似的处理。例如,你可能会从多个文件中选择数据子集,根据多个文件计算像总计和平均值这样的统计量。当文件数量增加时,手动处理文件的可能性会减小,出错的概率会增加。
TalkPython
2019/05/24
3.9K0
如何用R语言从网上读取多样格式数据
生活中,我们面临着各种各样的数据:比如你的成绩单,比如公司的财务报表,比如朋友圈的一些状态,比如微信里的一段语音……我们生活的大数据时代的一个重要特征便是数据的多样化(variety)。 也许你期待的数据是这样的:
机器学习AI算法工程
2018/03/12
6.2K0
如何用R语言从网上读取多样格式数据
实用:如何将aop中的pointcut值从配置文件中读取
改造老项目,须要加一个aop来拦截所的web Controller请求做一些处理,由于老项目比较多,且包的命名也不统一,又不想每个项目都copy一份相同的代码,这样会导致后以后升级很麻烦,不利于维护。于是我们想做成一个统一的jar包来给各项目引用,这样每个项目只须要引用该jar,然后配置对应的切面值就可以了。
Bug开发工程师
2019/12/09
24K1
C语言缓冲区之 gets(str);fflush(stdin); rewind(stdin);setbuf(stdin, NULL);
清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢? 以下几个实例:
瑞新
2020/07/07
2.8K0
Shell中的管道
管道 管道,从一头进去,从另一头出来。 在Shell中,管道将一个程序的标准输出作为另一个程序的标准输入,就像用一根管子将一个程序的输出连接到另一个程序的输入一样。 管道的符号是|,下面的程序将cat的标准输出作为less的标准输入,以实现翻页的功能: $ cat source.list.bk | less tee 有时候我们想要同时将程序的输出显示在屏幕上(或进入管道)和保存到文件中,这个时候可以使用tee。 tee程序的输出和它的输入一样,但是会将输入内容额外的保存到文件中: $ cat hello.t
mwangblog
2018/07/04
9100
教你如何快速从 Oracle 官方文档中获取需要的知识
https://docs.oracle.com/en/database/oracle/oracle-database/index.html
JiekeXu之路
2020/06/10
8K0
教你如何快速从 Oracle 官方文档中获取需要的知识
如何更有效地利用数据中心空间?
数据中心空间是指可供服务器存储在数据设施中的租用空间区域,包括机架、机柜、私人套装等,它通常每周 7 天、每天 24 小时监控所有电气和机械系统,如今,越来越多的公司选择空间更大的数据中心来满足其不断增长的存储需求。
网络技术联盟站
2022/04/03
4000
如何更有效地利用数据中心空间?
python读取excel中的数据
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.8K0
点击加载更多

相似问题

如何从STDIN或Unix管道中读取流

12

在Python中,如何从stdin读取数据,直到管道进程终止?

130

如何从管道grep输出中读取python中的STDIN

10

从python中的stdin读取坏管道文件

12

C++:将数据写入管道时从stdin读取

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文