问题标签 [unbuffered]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
442 浏览

python - Python 无缓冲模式导致 Windows 出现问题

运行以下命令,然后尝试运行交互式命令失败...

一个更简单的测试也失败了:

Python 2.6.6 (r266:84297, Aug 24 2010, 18:13:38) [MSC v.1500 64 bit (AMD64)] on win32在 Windows 7 上使用。

0 投票
3 回答
6550 浏览

python - 从python中的stdin无缓冲读取

我正在编写一个 python 脚本,它可以通过管道从另一个命令读取输入,就像这样

我的脚本myparser处理输出batch_job并写入它自己的标准输出。我的问题是我想立即查看输出(batch_job 的输出是逐行处理的),但似乎有这个臭名昭著的标准输入缓冲(据称是 4KB,我尚未验证)延迟了一切。

这个问题已经在这里这里讨论

我尝试了以下方法:

  • 使用打开标准输入os.fdopen(sys.stdin.fileno(), 'r', 0)
  • -u在我的 hashbang 中使用:#!/usr/bin/python -u
  • export PYTHONUNBUFFERED=1在调用脚本之前设置
  • 在读取的每一行之后刷新我的输出(以防问题来自输出缓冲而不是输入缓冲)

我的 python 版本是 2.4.3 - 我不可能升级或安装任何额外的程序或包。我怎样才能摆脱这些延迟?

0 投票
3 回答
55 浏览

c - 更改字符数组的输出

再一次,我发现自己相对迷失,并从同龄人那里寻求知识。我需要做的是编写一个程序,该程序采用编码语言,在辅音后添加字母“u”“t”并输出为英文。因此输入的 Hutelutluto 将输出为 hello。起初我以为我已经弄清楚了,但后来我的教授说我必须将初始输入存储在字符数组中并显示它。然后使用该字符数组输出修改后的翻译。

我尝试了几种不同的角度,一种尝试修改我的 readstring 函数以适应我的修改参数。它总是最终变得一团糟并给我意想不到的输出。

本质上,我相信我需要帮助将字符数组输入 while 循环,但是当我尝试时,我得到一个错误,指出我有一个与整数错误的指针比较。

这是我的代码版本,我相信我最接近解决问题。目前 while 独立于 readstring 函数工作。我确定我想多了这个问题,但我只是不知道如何解决这些问题。:

任何帮助或反馈将不胜感激!感谢您的宝贵时间!

ps

在考虑了您的建议后,我编辑了我的代码,但似乎它忽略了第一个之后的所有输入。我什至尝试将 !='\n' 条件更改为 i < 50,但我得到了相同的结果。

采纳 Tim 的建议后的代码行:

0 投票
1 回答
309 浏览

select - ZF2 无缓冲 SQL MySQL 选择

我有一个 ZF2 控制台应用程序,我需要在其中读取 MySQL 数据库中的 800 万条记录。

我正在尝试进行无缓冲的 MySQL 查询,但我找不到使用以太 Zend\Db\TableGateway\TableGateway 或更直接使用 Zend\Db\Adapter\Adapter 的正确方法,也许我找错地方了?

我正在寻找一个使用 Zend Framework 2 读取数百万行的适当示例。

在与调试器进行了长时间的长时间会话并阅读了 ZF2 代码后,我发现以下内容给了我所需的行为。

0 投票
4 回答
886 浏览

c - 6GB 大文件的 read() 在 x86_64 上失败

这是我的问题的描述:

我想使用readC 中的系统调用读取一个大约 6.3GB 的大文件到内存中,但出现错误。这是代码:

并编译它:

然后运行:

输出:

系统环境是

有两个地方不明白:

  1. 读取大文件失败,但不是小文件。
  2. 即使有错误,似乎errno也没有正确设置。
0 投票
5 回答
2609 浏览

c++ - 如何读取尚未刷新的进程输出?

考虑这个小程序被编译为application.exe

现在我使用这段代码来启动application.exe并获取它的输出。

我的问题是在我输入之前没有输出。然后获取两条输出线。printf我可以通过在第一条语句之后添加这一行来解决这个问题。

然后在我按预期输入之前获取第一行。

但是如何获取我无法修改且不fflush()“实时”使用的应用程序的输出(意味着在它们退出之前)?. windows cmd是如何做到的?

0 投票
0 回答
167 浏览

c# - C#调用外部命令并读取无缓冲的Stdout

有没有办法调用外部命令行程序并读取未缓冲的标准输出?已经阅读了几个主题和示例,但都建议在Process.BeginOutputReadLine()所有前提条件下使用。( MSDN Process.BeginOutputReadLine )

我的问题是我正在调用的程序(我没有源代码)在执行期间没有换行输出。导致我必须等到执行完成,然后一次解析所有数据。

有任何想法吗?

有一个想法来附加我正在调用的程序START /B more & my_prog.com,然后在 Stdin 上用换行符提供正在运行的进程,但从未让它从我的程序“开始:/B:系统找不到指定的文件”中工作。. 但似乎在 CMD 提示符下工作。

0 投票
1 回答
2340 浏览

python - Python 不在无缓冲模式下工作

我在纠结于 python 的问题。我在 Red Hat Enterprise Linux Server 7.1 (Maipo) 上使用了 Python 2.7.13 和 Python 3.6.0。为了监控进程输出,我想使用tail -f实时查看 STDOUT 和 STDERR。这里的关键字是无缓冲输出。互联网上的许多建议说使用python -u ...或环境变量 PYTHONUNBUFFERED 之类的PYTHONUNBUFFERED=1 python ...or stdbuf -e0 -o0 python ...。然而,以下测试脚本没有任何效果。

对于所有不同的命令,我总是有缓冲输出。即使当我想使用 STDERR 时。它仍然是缓冲的,这让我很困惑,因为默认情况下 STDERR 应该是无缓冲的。使用sys.stdout.flush()orsys.stderr.flush()也没有做这项工作。在flush=True内部使用时,print()它按预期工作。

我正在寻找一种不需要编辑代码的解决方案,因为我无法编辑所有程序以获得无缓冲并立即刷新输出。我怎样才能做到这一点?

期待您的回答!

最好的祝愿!

0 投票
1 回答
24 浏览

shell - 如何在没有缓冲区的情况下将两个单独的输出通过管道传输到单个程序的输入中

我有一个可执行的 python 脚本,process-data.py它通过标准输入读取实时输入并实时处理它。我想向它提供两种类型的数据:图像和原始文本。两者都是从其他 python 脚本生成的。

使用unbuffer和管道时处理文本有效,如下所示:

unbuffer ./text-output.py | ./process-data.py

对图像数据做同样的事情也有效

unbuffer ./image-output.py | ./process-data.py

我将如何同时运行image-output.pytext-output.py处理数据而不会从缓冲区延迟?我尝试过使用 cat,但它不能实时工作(两个“输出”脚本都会随着时间的推移生成它们的数据并且无限期地这样做)

0 投票
1 回答
368 浏览

python - 从子进程获取无缓冲的输出无法正常工作 Python

我有一个可执行文件,如果我使用标志运行它,它会启动一个始终生成消息的工具。当我尝试使用子进程运行它时,我得到了 cmd 的输出,这很好。问题是我想接收这些消息并对它们做一些事情,但由于某种原因,unbuffring 方法不起作用,我没有收到任何消息。

以下是我尝试过的代码:

要生成输出,请尝试以下操作:

和:

和:

知道为什么 stdout 行上的代码总是阻塞吗?

更新:

例如,如果我有以下无限程序:

inf.py

以及运行它的以下代码:

并生成我使用上述方法之一的输出,如果我使用 CTRL+C 停止它,它总是卡在这一行: