问题标签 [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 回答
1904 浏览

c - lseek 给出 ESPIPE 错误

我打开了一个普通文件,它充当记录数据库。我打开它为:

然后在我的find_record函数中,我将偏移量移到开头。

它抛出一个ESPIPE错误。现在我不知道发生了什么。我的文件描述符是否被视为管道?如果是,为什么?

真的lseek在工作吗?它应该是因为ret_val不是-1。

0 投票
1 回答
116 浏览

c - C 中的流引擎最佳实践

语言:C / ENV:Linux

我正在开发一个流引擎,现在我可以启动、停止和暂停流,但是寻找是让我很头疼的操作,我之前已经在这里问过一个问题,并修复了代码中的一些问题答案。

使用lseek()函数,我将打开的流文件描述符作为第一个参数传递,另外我使用 UDP 进行传输,类似于以下代码:

每当我在流式传输时尝试搜索时,流式传输停止并且图片挂起。

有什么我应该注意的吗?例如:例如在搜索文件后尝试sleep()nanosleep()以使更改生效。

我找不到此类引擎中最佳实践的示例、论文或相关文章。

编辑:

经测试,文件似乎继续流,但网络上的接收设备不再捕获流连接,并计算减去查找时间后完成所需的时间,流似乎正常完成。

代码片段:

0 投票
2 回答
1495 浏览

c - 寻求不工作

我正在尝试使用 lseek 检查我的 txt 文件的大小。不幸的是我不工作。我的 T.Txt 包含 16 个字符:ABCDABCDDABCDABCD 仅此而已。所以数字变量应该有16+1。为什么是19呢?第二个问题为什么我不能使用 SEEK_END-1 从最后一个位置 1 开始。?我将不胜感激。

0 投票
0 回答
250 浏览

allocation - lseek 命令(磁盘分配)

“lseek 命令根据指令 wherece 将描述符文件的偏移量重新定位到参数偏移量,主要用于索引磁盘分配的文件系统实现”

我正在阅读我教授的简报并看到了这个声明。我不明白的是 lseek 命令与链接和连续相比如何与索引磁盘分配相关联。有人可以解释为什么它说索引磁盘分配比连续或链接更容易实现吗?

从我从另一个来源读到的内容:“lseek() 命令将降级为 O(N) 时间,因为我们需要按顺序扫描文件分配表以访问文件数据。”

这不会更多地与连续磁盘分配有关,因为它会按顺序阻止分配的数据。

0 投票
1 回答
780 浏览

c - 使用结构时的 mmap 偏移

我有这个结构:

我想在共享内存文件中多次使用该结构。我已经验证了它仅用于一次用途。

当我再次运行循环时,写入从共享内存文件的开头开始,覆盖之前的内容。如何移动偏移量以便支持更多条目进入共享内存?我试过这两个:

任何建议将不胜感激。`

0 投票
1 回答
7290 浏览

c - 如何使用 lseek() 确定偏移光标是否位于 EOF?

如何通过lseek()仅使用来确定偏移光标当前是否位于 EOF?

0 投票
1 回答
736 浏览

c - 调用 lseek() 时,POSIX read() 函数不读取任何字节

我有以下程序

以及 /var/testfile 中的以下内容:

程序的输出:

我不明白为什么在 lseek() 调用后 read() 函数不读取任何字节。这是什么原因?我希望得到与第一次 read() 函数调用相同的结果。

0 投票
2 回答
851 浏览

c - 使用 lseek() 打印出重复的字符

运行这个给了我。

测试文件只包含单词“TEST”。我希望能够向后打印单词。

0 投票
1 回答
204 浏览

c - C - 读取文件中的结构

嗨,我想读取我在文件中写入的结构中的一些信息,fwrite但是有一个问题我无法提取这些信息。我有2个文件

ttfs.h:

tfs_create.c:

有了这个,我创建了一个包含 7 个块的磁盘,并将所有 7 个块写入我的文件中。在我的第一个块中,我用小端写了我的磁盘大小(7)。所以 block[0] = 00, block[1] = 00, block[2] = 01, block[3] = 11 或类似的东西。

但是当我打印我的结果时,我得到:

不是我所期望的,我没有尝试read,我得到了相同的结果。所以我的程序没有从磁盘写入信息。或者当我在磁盘中写入我的块时出现问题?

0 投票
1 回答
3441 浏览

c - 使用 read write 和 lseek 打印文件或标准输入的最后 10 行

我正在实现 tail 函数,我只应该使用read(),write()lseek()I/O,到目前为止我有这个:

到目前为止,它适用于超过 10 行的文件,但是当我传递一个少于 10 行的文件时它会刹车,它只打印该文件的最后一行,我无法让它与stdin. 如果有人能给我一个如何解决这个问题的想法,那就太好了:D