【问题标题】:Get Buffering Parameters From an Open `FILE*`从打开的 `FILE*` 中获取缓冲参数
【发布时间】:2016-12-17 09:04:47
【问题描述】:

在 C 语言中,我们可以使用setvbuf(...) 来设置缓冲区、缓冲区大小和缓冲模式。我惊讶地发现没有人问过如何读取这些值,给定一个开放的FILE*(例如stdout,或用户提供)。即,如何实现“getvbuf(...)”例程(甚至是它的子集)?

void getvbuf(FILE* stream, char** pbuf,int* bufmode,size_t* bufsize);

【问题讨论】:

    标签: c file buffer


    【解决方案1】:

    我不认为它可以作为标准的一部分。然而 Solaris 引入了一些非标准机制来查询这些属性中的一些,这些属性在 GNU C 编译器中也可用。

    查看更多详情:https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.html

    我很想知道您想要执行 getvbuf(..) 之类的用例。

    【讨论】:

    • 我现在就在那个位置。在管道输出时,我在不同版本的 Windows(95 和 10)上有不同的缓冲行为,我想确定它是来自 CRT 还是来自 shell。
    • This answer on a duplicate question 详细说明了此答案中给出的信息,并详细说明了可能的(非便携式)实现。关于动机:想象一个管理和跟踪子进程的库,提供用户代码来操作它们(包括设置和获取缓冲区类型等)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多