首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从stdin读取

从stdin读取
EN

Stack Overflow用户
提问于 2010-09-10 01:43:24
回答 1查看 1.8K关注 0票数 0

似乎read(0,buffer,255)在读取时总是返回1。在我的程序中,我通过管道直接输入到这个程序中,但是我注意到它总是返回一个1。为什么会这样呢?有没有更好的方法来做这件事?同时,它似乎正确地填满了缓冲区,超过了1个字符。

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-10 01:51:13

read允许返回的字符数少于您要求的字符数,因此您应该为这种情况编写代码,而不是试图找到避免这种情况的方法。

例如,如果文件(或管道)中只剩下22个字节,它将为您提供这些字节。

Linux man page (因为read是POSIX而不是C++ ):

如果这个数字小于请求的字节数,这不是一个错误;例如,这可能是因为现在实际可用的字节更少了(可能是因为我们接近文件末尾,或者因为我们正在从管道或终端读取数据),或者因为read()被信号中断。

如果您的缓冲区的其余部分似乎被正确填充,我可以向您保证,这完全是偶然的,您不应该依赖它。如果read返回1,则仅使用该字符。如果您遵循规则,字符似乎消失了,那么您可以回来抱怨read实现有缺陷(我不需要指出这是非常不可能的)。

尝试以下程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>

int main (void) {
    char buff[255];
    int i;

    while ((i = read (0, buff, 255)) > 0) {
        printf ("%3d: [%*.*s]\n", i, i, i, buff);
    }

    return 0;
}

通过以下方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo hello there | ./tstprg ; (echo hello ; sleep 1 ; echo there) | ./tstprg

看看你能得到什么。我的输出是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 12: [hello there
]
  6: [hello
]
  6: [there
]

正如我所料。

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

https://stackoverflow.com/questions/3681796

复制
相关文章
C语言缓冲区之 gets(str);fflush(stdin); rewind(stdin);setbuf(stdin, NULL);
清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢? 以下几个实例:
瑞新
2020/07/07
2.8K0
stdin and stdout which it's ?
最近写了几个C函数,来处理项目中一个Desktop跨应用的进程通信,被32-bit,LE(BE)折磨了很久,stdin and stdout 看起来是一个很简单的标准输入输出,但是处理的过程中,却遇到了很大的障碍,因为历史问题,一个bytes的长度,需要将消息的位置移动4个byte存储消息的长度,先发送给对方,告诉对方我即将发送一个多少长度的byte,反之解析也是亦然。
icepy
2019/06/24
9890
stdin and stdout which it's ?
pyspark之从HDFS上读取文件、从本地读取文件
hdfs上的路径: path="hdfs:///主机名:端口号/地址" 本地上的路径: path"file:///本地地址" 读取文件: rdd=sc.textFile(path)
西西嘛呦
2020/08/26
5.1K0
Linux gzip: stdin: not in gzip format
在解压tar.gz文件的时候报错 tar -zxvf otp_src_18.3.tar.gz gzip: stdin: not in gzip format tar: Child returned
Arebirth
2020/06/19
3.1K0
如何从 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 读取?
logstash之input配置stdin类型详解
配置示例 input { stdin { type => "demo-stdin" add_field => {"test" => "hello"} codec => "plain" tags => ["stdin-test"] } } output { stdout{ codec=>rubydebug } } 启动 bin/logstash -f /etc/logstash/conf.d/demo-input-stdin.conf 输入test 返回 { "
苦咖啡
2018/04/28
8370
How to Use the Stdin, Stderr, and Stdout Streams in Bash
How to Use the Stdin, Stderr, and Stdout Streams in Bash – Linux Consultant
阿东
2023/03/16
2.8K0
How to Use the Stdin, Stderr, and Stdout Streams in Bash
python从txt文件读取数据
  (作为一个python初学者,记录一点学习期间的笔记,方便日后查阅,若有错误或者更加便捷的方法,望指出!)
py3study
2020/01/19
3.9K0
python从txt文件读取数据
从天擎读取EC数据
最近我们在试用天擎,测试了从天擎读取EC数据,请求数据的程序来自天擎网站(见下图),数据传输的速度和稳定度都相当不错,尤其是可以按需求请求数据,避免了“一个馒头搭块糕”式的打包式下载数据对于时间和存储空间的极大浪费。请求江苏地区要素场时,数据基本秒出,感觉畅爽无比
郭好奇同学
2021/03/25
2K0
从天擎读取EC数据
关于stdin流以及缓冲区浅谈
   突然觉得自己看了很多别人写的东西,学到很多,可惜以后每次都遇到问题忘了又得去网上一通乱找,还找不到自己当初看的写的较好一些东西资料,索性决定从现在起把自己每天获得的看到的一些东西和总结写到博客里面。
渴望飞翔的猪
2022/07/17
1.4K0
PhpSpreadsheet_php标准输入流stdin
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
6870
matlab读取mnist数据集(c语言从文件中读取数据)
mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。
全栈程序员站长
2022/08/01
5K0
matlab读取mnist数据集(c语言从文件中读取数据)
sl从程序集中读取xaml文件
 StreamResourceInfo sri = Application.GetResourceStream(new Uri("HowTo;component/Page.xaml", UriKind.Relative)); StreamReader sr = new StreamReader(sri.Stream); txtReadxml.Text = sr.ReadToEnd(); {1};component/{2} 1为程序集的名字 2为想读取的页面 page.xaml: <UserCont
用户1172164
2018/01/16
1K0
sl从程序集中读取xaml文件
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
python 从网络URL读取图片并直接
如下代码段是关于python 从网络URL读取图片并直接处理的代码。 import urllib2 import Image import cStringIO def ImageScale(url,size): file = cStringIO.StringIO(urllib2.urlopen(url).read()) img = Image.open(file) img.show()
py3study
2020/01/08
2.1K0
从控制台读取password – C#
______________________________________________________________
全栈程序员站长
2022/07/06
8330
从控制台读取password – C#
zuul动态配置路由规则,从DB读取
前面已经讲过zuul在application.yml里配置路由规则,将用户请求分发至不同微服务的例子。
天涯泪小武
2019/01/17
1.6K0
用Pandas从HTML网页中读取数据
本文,我们将通过几步演示如何用Pandas的read_html函数从HTML页面中抓取数据。首先,一个简单的示例,我们将用Pandas从字符串中读入HTML;然后,我们将用一些示例,说明如何从Wikipedia的页面中读取数据。
老齐
2020/05/15
9.6K0
用Pandas从HTML网页中读取数据
Kibana源码剖析 —— savedSearch从读取到跳转
持久化对象 Kibana中可以查询到很多保存的对象,他们都存储在es中一个叫做.kibana的索引中。 搜索 存储在type为search中; 图表 存储在type为visualization中; 仪表板 存储在type为dashboard中; 每个plugins下的tab页都有一个对应的savedObject对象,比如 检索页对应的是savedSearch对象(discover/saved_searches/_saved_search.js) 图表页对应的是savedVisualization对象(vis
用户1154259
2018/01/17
1.6K1
点击加载更多

相似问题

从stdin读取

22

从stdin读取()

51

从stdin中读取,然后清除stdin

12

从stdin读取密码

141

从stdin读取脚本

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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