当前位置:  技术问答>linux和unix

lseek的第二个参数似乎没有起作用啊

    来源: 互联网  发布时间:2017-04-18

    本文导语:  我照着APUE第三章的讲解,测试一下lseek函数。 首先关闭stdout,再打开一个临时文件,这个临时文件就是stdout的目标了,然后lseek寻址,offset我指定一个正整数。 我期待的结果是,因为offset是正数2,所以写文件的时候...

我照着APUE第三章的讲解,测试一下lseek函数。
首先关闭stdout,再打开一个临时文件,这个临时文件就是stdout的目标了,然后lseek寻址,offset我指定一个正整数。

我期待的结果是,因为offset是正数2,所以写文件的时候应该先写入两个空格,再写入我指定的字符串。但是运行的结果是,lseek的第二个参数似乎不起作用,每次运行之后看/tmp/my1文件,结果都是增加了"123”,并没有增加我预期中的空格。

#include 
#include 
#include 
int main(void){
    close(STDOUT_FILENO);
    int fd=open("/tmp/my1",O_CREAT|O_RDWR);
    lseek(fd,2,SEEK_END);
    printf("123");
    return 0;
}


是不是我对lseek的理解有问题? 还是说在SEEK_END的情况下,lseek的第二个参数>0没有意义? 到底如何解释呢?

|
你的SEEK_END是什么,已经是文件末了你还能往哪移?
lseek(fd, 2, SEEK_SET);

|
-2 或者 write 一个字符就有作用了

|

朋友,能再说明白一点么?
我像楼主所说那样试过了,也是不行。同样是明白。

|
第二个参数 有用的,很有用的

是设置当前的文件指针的位置,设置的的一个参数的偏移量就是得依据第二个参数设置的位置。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用对文件操作的lssek系统调用,出现line:33lseek: Success
  • lseek函数的疑惑
  • 请问一个lseek的问题?
  • 一个文件多次打开,分别用lseek调整当前文件位移,他们互相之间会影响吗?
  • 求助一个关于lseek64的问题
  • 看一段关于lseek()的代码,里面涉及到系统调用。
  • 哪位老大能讲一下lseek函数和dup与dup2函数是干什么用的,最好有实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,