C- fwrite中偏移的奇怪值

  • 本文关键字:fwrite c fwrite ftell
  • 更新时间 :
  • 英文 :


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

获得了写的绝对偏移
long int pos = ftell(stream);

然后,该值将传递给一个size_t参数(如此无符号长)并打印值的函数。

我遇到了一些与184446744073709551615的呼叫,作为偏移(2^64-1),所以我想FTELL返回的最初长时间是-1。这些操作总是写10个字节。

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

我不追踪那些奇怪的fwrites访问的文件的名称,因此我不知道正在访问什么。我也应该确保该程序是一个MPI程序。涉及的流实际上可能是插座,也可能是文件以外的其他东西...

-1从ftell返回值表示设置了errno。这是来自Manpage的Relivenat文本:

ftell()返回当前偏移。否则,返回-1并将ERRNO设置为指示错误。

相关内容

  • 没有找到相关文章

最新更新