问题标签 [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.
c - 使用 C 中的 lseek 命令在文件中查找字符串
我有一个按以下顺序存储学生数据的文件:
id
(空格) name
(空格)address
以下是该文件的内容:
每个数据都存储在换行符中。
我想用id
10 搜索学生并使用命令显示他/她的详细信息lseek
,但我不会完成任务。任何帮助表示赞赏。
c - fopen() 返回 NULL 但 open() 系统调用返回正确的文件描述符?
我一直在尝试在 Ubuntu 20.04LTS 上运行这个非常简单的 C 代码
但无论我到目前为止尝试了什么 fopen 仍然返回这个错误:
我假设的第一件事是程序没有打开文件的权限,但权限设置正确:
接下来我尝试将文件的位置更改为 /home 或指定完整路径而不是文件名;还是一样的结果
现在是我无法理解的部分,在 Strace 下运行脚本时,它似乎工作正常,至少现在
openat() 调用返回一个小的正整数,这是我目前阅读的正常行为
最后,真正让我大吃一惊的是,上面 Strace 的输出与我几分钟前收到的输出不同。出于某种原因,我似乎无法重新创建该输出,但它的要点是:
-openat() 返回 3
- lseek(fd, -9, SEEK_CUR)被调用并返回-1 ESPIPE 非法搜索请原谅我的语法,我是凭记忆写的。另外为什么偏移量是负整数?这正常吗?
为什么 lseek() 前几次被调用,但不是现在?
在这里阅读 lseek 上的 man它说
在 Linux 上,在终端设备上使用 lseek() 失败并出现错误 ESPIPE。
还有错误描述符
ESPIPE fd 与管道、套接字或 FIFO 相关联。
我相信第一个引用是不相关的,网上有很多线程,人们设法在 linux 上使用 fopen()。当涉及到错误描述符时,它超出了我的理解水平。
渲染器1.log:
这就是我能想到的,显然它还不够好。
任何和所有的帮助表示赞赏。
c - lseek 的意外行为
我lseek
只是用来查找文件的大小并lseek
返回比文件的实际大小更少的字节。我认为代码是正确的,我无法解释为什么会发生这种情况。
当我第一次运行该程序时,它运行良好。然后我在文件中添加了一些数据,所以它改变了它的大小。从那以后,当我用新文件再次运行程序时,结果总是旧文件的大小。
任何帮助表示赞赏!
c - 如何逐字节复制c中的文件
好的,所以我正在学习 C 并且在一本教科书中有一个练习留给读者,这本书解释了一个文件(或至少是一个常规文件)只是一个字节数组。据我了解,在 linux 中,每个块都是 512 字节,但是当您将文件读入文件描述符时,程序会自动加载整个文件,这可能是正确的吗?这本书介绍了 Linux 系统调用read, write, and lseek
(一些基本的低级调用)。
现在的目标就像我说的将文件逐字节复制到一些随机的新文件中。伪代码将是完全可以接受的。无论如何,我的理解是您需要
我的理解是构建会是这样的:
至少在现阶段对我来说,这确实是一个相当复杂的问题。我的想法是将文件的全部内容读入文件描述符,然后使用管道逐字节写入新文件,将前一个文件的全部内容复制到新文件中。我也不确定 lseek 在这种情况下如何帮助我们。或者我是否过于复杂化并且方向完全错误?
c++ - 在下面的示例代码中,我希望使用 _lseek(fh, 0L, SEEK_END) 获取文件中的字符数。但它返回零
我尝试在以下结构(struct_iobuf)中获取 cnt、ptr、flag 和 base 的替代功能
- cnt = 使用 lseek 获取文件中的字符数
- flag= 使用了 iostream 标志
对于 ptr 和 base,任何指导都会有所帮助。
输出: