问题标签 [io-buffering]
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.
lisp - lisp read 命令对 sbcl 工作错误
我将这个从 (Land of Lisp)in 中读取函数的示例锁定到我的 sbcl repl 中,并且在我输入响应之前它不会显示提示:“请输入您的姓名”。然后它显示响应。我知道这是错误的,给了什么?
我尝试了其他示例写入函数,并尝试了 write 而不是 princ。没运气
这是我repl的剪切和粘贴:
c - 在为写入而打开的文件句柄上调用 CloseHandle 是否也暗示 FlushFileBuffers?
我遇到了与此类似的代码(针对 MCVE 进行了精简):
最后一部分让我觉得很迂腐,因为我的印象是调用CloseHandle
会将任何缓冲的输出刷新到磁盘(类似于fclose(FILE *)
,其中C 标准明确记录了缓冲区将被刷新)。但是,我无法CloseHandle
在 MSDN 上的文档中找到此信息。
FlushFileBuffers
那么,为了避免丢弃缓冲的输出,在关闭文件句柄之前立即调用是否是必要的?
tcl - 在TCL中,当文件处于连续写操作时,是否可以删除文件的前几行或前n行
以下是有关如何将数据写入文件的代码。
set fid [open "file.txt" w]
fconfigure $fid -buffering line
我想知道是否有任何方法可以在文件处于写入模式时在不关闭 fileID 即 fid 的情况下删除文件的前 n 行。
winapi - 将最后 N 个字节写入使用 FILE_FLAG_NO_BUFFERING 打开的文件
在将大量顺序数据写入磁盘时,我发现有一个内部 4MB 缓冲区,并且在打开文件进行写入时我指定了[FILE_FLAG_NO_BUFFERING][1]
,以便使用我的内部缓冲区。
但这也产生了写入完整扇区块(我的机器上为 512 字节)的要求。
如何将最后 N<512 个字节写入磁盘?
WriteFile 是否有一些标志允许这样做?
我是否用额外的NUL
字符填充它们,然后将文件大小截断到正确的值?(有SetFileValidData
还是类似的?)
对于那些想知道尝试这种方法的原因的人。我们的应用程序记录了很多。为了处理这个问题,存在一个专门的日志线程,它可以格式化日志并将其写入磁盘。此外,如果我们以最完整的细节记录,我们每秒记录的数据可能会超出磁盘系统的处理能力。(对于 SAN 系统调整不佳的客户,通常会注意到这一点。)
因此,目标是尽可能多地写入日志,但也要注意我们何时开始使系统超载,然后稍作保留,例如减少日志的详细信息。
因此,有一个想法是填充一个大内存块并将其提供给操作系统,希望减少开销。
c - 如何使 setvbuf 中的 _IOLBF 选项起作用
网上有很多关于如何使用setvbuf实用程序使用完全缓冲/非缓冲流的示例。但是,我正在为行缓冲选项而苦苦挣扎。
假设我们有一个包含两行 int 数字的文本文件“nums.txt”。
我想读取文件并使用行缓冲选项将流输出到标准输出。
观察:两行同时打印。
预期行为:第一行将打印到标准输出,然后(一秒后)第二行。
这是代码:
该程序可以调用
kernel - 我的无线接口似乎缓冲传入的消息并定期接收它们
我的无线网络接口有问题。如果我尝试发送数据包,它似乎工作正常,当我必须接收某些东西时,麻烦就开始了。这就像它缓冲传入的数据包并且在使用 IF 发送某些东西之前不会将它们传递给上层,此时所有接收到的数据包都被处理。 这是我的wireshark的截图。如您所见,有几组传入数据包同时处理(在示例中它们是 CAMv1 数据包,但它适用于任何其他类型的数据包)
另一个奇怪的行为是,如果我尝试在该接口上 ping 我自己的地址,我会收到所有 ICMP 回复,但每隔几秒以 4-5-6 的随机组。
我的第一个猜测是它与一些电源管理设置有关,但即使禁用它,问题也没有解决。
接下来,我查看了中断日志,发现在该接口上从未调用过发送或接收中断:
还有cat /sys/kernel/debug/ieee80211/phy0/ath9k/interrupt的输出
所以看起来传输和接收是由一些轮询机制来处理的。经过一番研究,我发现了内核配置CONFIG_NET_RX_BUSY_POLL,我试图禁用它但运气不好,因为我不能通过menuconfig做到这一点,如果我尝试编辑 kernel/net/Kconfig 以手动禁用它(CONFIG_NET_RX_BUSY_POLL=n)由于内核恐慌,生成的图像无法启动,所以我想我应该满足一些依赖关系。
我也尝试过这个,但 menuconfig 和 .config 文件将 CONFIG_NET_RX_BUSY_POLL 保持为“是”。我也尝试从 menuconfig 编辑 PREEMPT_RT_FULL但我也不能,可能是因为我有不同的内核版本。
到目前为止,我已经走了多远,有没有人遇到相同或相似的问题,或者可以弄清楚我可以尝试什么?关注我的环境细节
板:基于 variscite mx8m 的定制板(https://variwiki.com/index.php?title=Debian_Build_Release&release=RELEASE_BUSTER_V2.3_DART-MX8M)
收发器:Compex WLE200NX、Atheros AR9280 芯片组,由 ath9k 驱动程序处理
操作系统和内核:Debian 10,内核 4.14.78