问题标签 [lseek]

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 投票
1 回答
462 浏览

c++ - 当 pread 接受偏移值时,为什么我们需要 lseek?

我很难理解为什么lseek函数有用。假设我从用户那里得到了这样的参数:

我想从偏移量中读取 100 个字节。我可以pread这样使用:

另一方面,我知道我可以lseek这样设置文件:

所以我相信我pread已经实现了阅读。我错过lseek了什么可以帮助我阅读文件?

0 投票
1 回答
2285 浏览

c - Lseek SEEK_END 不起作用?

我正在开发一个带有操纵杆的 C 程序,我想获得最后一个事件,它是 js0 文件的最后一行。我试图将光标移动到最后一个元素之前,但它似乎不起作用。知道为什么吗?

我确定我正在阅读的文件至少是 (sizeof(e)) 长。Lseek 返回 -1 所以我得到了 errno 并且是 29 - 非法搜索:为什么这应该是非法搜索?即使我使用 0 作为偏移量,我也会得到相同的结果

我正在使用最新版本的 Ubuntu,感谢您的帮助

0 投票
1 回答
500 浏览

c++ - C 和 C++ 之间的区别 ( lseek() )

我正在尝试重新设计我以前从事过的项目的 API,它是用 C 编写的,它可以在用 C++ 语言编写的应用程序中使用。

我在 C 语言lseek()中用于追逐表格、页面等。我的问题是,lseek()在 C++ 中仍然可以按照我使用它的方式使用它,如下面的示例代码:

多谢

0 投票
0 回答
494 浏览

c - fseek 性能比 NFS 下降

我是一个分析电生理数据的 Matlab 用户。最近我发现如果相对偏移量(从当前位置到新位置的字节距离)大于 10^5 或 10^6 左右,则通过 NFS 共享文件进行 fseek 会很慢。

我用 C 检查了这个,似乎 fseek 很慢,而 lseek 不是。有什么好方法可以提高 NFS 上的 fseek 速度吗?将文件复制到本地驱动器不是一种选择,因为我正在处理实时数据。

当相对偏移量小于此值时,fseek 速度约为 10^-7 秒。当相对偏移量大于此值时,fseek 速度约为 10^-4 秒。无论偏移量大小如何,lseek 速度都是 10^-7 阶。我使用的是 CentOS6,用 Matlab 和 Eclipse 测试过。

欢迎任何建议。

下面是我的测试代码。由于 fseek 在内部将 SEEK_CUR 转换为 SEEK_SET,因此我在 SEEK_CUR 合适时使用 SEEK_SET。

附加信息:(部分IP地址改为xx或yy)

nfstat -m 的结果:

mount -v 的结果:

0 投票
2 回答
1812 浏览

c - lseek() 尝试使用字节文件,但指针是 FILE 类型

这是一个让每个人都意识到的项目。这是我在 C 语言中的第一个项目,并且有关于lseek()和移动文件指针的问题。

现在我可以读取位图文件的位图和 DIB 标头。我现在需要遍历像素并以某些方式操作它们。我已经用伪代码写出了我打算如何处理这种操作。但是我很难理解如何正确使用lseek,因为我的代码不断收到incompatible pointer to integer conversion...警告。我将给出我的主要方法的一个简短示例,因为这是一个项目:

同样,不要试图提供太多我的代码,因为这是一个项目。但我想帮助了解如何正确使用lseek。我注意到它返回了一个int值,所以我知道这是因为我的文件指针是FILE. 但是使用这种方法的正确方法是什么?我看到了一个例子,它在读写模式下打开了同一个文件,其中写入模式使用lseek. 但由于某种原因,我不知道这是否正确。

已编辑 基于两个成员的响应,我将上面的代码更改为:

除了与 C 相关的一切,我没有得到什么?

0 投票
2 回答
697 浏览

c - lseek 尾文件的替代方法(Posix)

我必须实现tail(posix 系统调用)的一个版本。我是用lseek和做的pread。(我到达我的文件的末尾,然后我搜索正确的偏移位置,然后用 pread 从这个位置读取,并写入 stdout 直到文件末尾)。但是现在,我必须在没有 lseek 的情况下实现另一个版本的 tail。问题如下:

“如果文件不支持对lseek.

我不明白我们怎么能没有lseek...

如果您有想法,我将非常感激:)

非常感谢你 !

0 投票
1 回答
736 浏览

assembly - 程序集移动文件指针

在此处输入图像描述

如何计算 CX:DX 值?我不知道这是什么意思有人帮助我

0 投票
0 回答
202 浏览

c - 在 c 中用作记录程序数据的内存映射文件

我正在尝试使用内存映射文件记录我的程序的活动。该文件创建得很好,我也无法写入它,但是我遇到了两个问题:

  1. 当我重新运行程序时,文件要么重置要么写在上面
  2. 我在上面打印的字符串没有写在它的整体中。

这是我创建文件的地方:

这是我写给它的一个例子:

只有这 2 个sprintfs日志文件会导致:

0 投票
1 回答
865 浏览

c - 为什么 lseek 使用偏移量 `-2` 而不是 `-1` 来反向读取?

为什么是-2而不是-1?这是代码的一部分,它必须将一个字符串从一个文件反向写入另一个文件。你能帮我理解为什么它是-2而不是-1吗?

0 投票
1 回答
178 浏览

unix - 如果父进程和子进程附加到同一个文件,lseek() 和 write() 是否需要是原子的?

问题陈述

一个进程打开一个文件进行追加(假设没有 O_APPEND,这里追加意味着先到lseek()文件末尾然后write()),然后分叉一个子进程。两个相关进程同时附加到文件中。假设lseek()write()都是原子的。举一个例子来讨论在这个场景中拥有lseek()write()成为一个原子操作的必要性。

我的想法

  1. 当前文件偏移量存储在打开文件表中的条目中,并且该条目由 2 个依赖进程共享。
  2. write()将偏移量更新到刚刚写入的数据的末尾。

这两点保证即使在下面的场景下, 写入的数据P2也不会被P1.

我的问题

那么,在这种特定情况下,是否lseek()仍然write()需要成为一个原子操作?