gpt4 book ai didi

c - fwrite 中偏移量的奇怪值

转载 作者:行者123 更新时间:2023-11-30 17:38:05 24 4
gpt4 key购买 nike

为了跟踪 I/O 调用,我在运行程序时覆盖了 LD_PRELOAD 共享库中的 fwrite。在我的 fwrite 版本中,我使用

获取写入的绝对偏移量
long int pos = ftell(stream);

然后将该值传递给采用 size_t 参数(无符号长整型)的函数,并打印该值。

我遇到了一些以18446744073709551615作为偏移量(2^64 - 1)的调用,所以我猜测ftell返回的初始long int是-1。这些操作总是写入 10 个字节。

所以我的问题是:什么可能导致流偏移量设置为 -1?

我没有跟踪那些奇怪的 fwrite 访问的文件的名称,所以我不知道正在访问什么。另外我应该明确该程序是一个 MPI 程序。所涉及的流可能实际上是一个套接字,或者是文件以外的其他东西......

最佳答案

-1 从 ftell 返回值表示 errno 已设置。以下是联机帮助页中的 relivenat 文本:

ftell() returns the current offset. Otherwise, -1 is returned and errno is set to indicate the error.

关于c - fwrite 中偏移量的奇怪值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com