目录

  • 前言
  • lseek函数返回值
  • 实操证明
  • 书的原图
  • 总结

前言

操作系统:Fedora
头文件 <sys/types.h> , <unistd.h>

lseek函数返回值

off_t oldpos(int fd,off_t dist,int base)

当lseek执行成功时,它会返回最终以文件起始位置为起点的偏移位置。如果出错,则返回-1,同时errno被设置为对应的错误值。
而不是《Linux编程基础》中所说 “当执行成功时,返回值oldpos为移动之前的位置”

实操证明

#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){char ch;char filename[1024];int n=2;int fd=open("hello.txt",O_RDONLY);off_t oldpos=lseek(fd,1,SEEK_SET);//设此时指针指向a位置printf("%d\n",oldpos);oldpos=lseek(fd,1,SEEK_CUR);//此时oldpos为b1printf("%d\n",oldpos);printf("\n");close(fd);return 0;
}

如果按这本书上所说,那么这里应该是 b1=a
修改第二次调用 lseek 函数的参数

oldpos=lseek(fd,5,SEEK_CUR);//此时oldpos为b2

再次执行程序,应该有 b2=a
所以,如果书上是对的,那么应该有 b2=b1
下面分别为两次执行的结果


可以看到 b1=2,b2=6 ,所以可以得出,书上的说法是错误的

书的原图



这里书中还有的小错误:头文件应该是 <sys/types.h>

总结

1.当lseek执行成功时,它会返回最终以文件起始位置为起点的偏移位置(即指针所指位置-1)。如果出错,则返回-1,同时errno被设置为对应的错误值。
eg:假设一个文件的内容为 abcdefg,那么当指针指向 c 时,返回值为2(离起始点 a 偏移2)
2.尽信书不如无书,因为这本书的错误,我用了大把青春年华调试代码,还是觉得逻辑有问题,结果一查发现书给出错了(疲惫.jpg): (
(下面是我按书调试了半天的代码)

Linux编程基础之lseek函数返回值相关推荐

  1. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf

    Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...

  2. C语言 const 修饰函数返回值 - C语言零基础入门教程

    目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 二.const 修饰在函数名前面 三.const 修饰在函数名后面 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

  3. linux如何拿到文件的返回值,linux 下read函数返回值分析

    原文出处:http://blog.chinaunix.net/space.php?uid=20558494&do=blog&id=2803003 read函数是Linux下不带缓存的文 ...

  4. linux中signal函数返回值,signal函数、sigaction函数及信号集操作函数

    信号是与一定的进程相联系的.也就是说一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如一个进程可以忽略某些信号而只处理其他一些信号另外一个进程还可以选择如何处理信号.总之这些总与特定的进程相联 ...

  5. ostream作为函数返回值_GO语言基础函数

    GO语言基础–函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数 ...

  6. linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  7. linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态

    $?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...

  8. linux里返回状态命令行,Shell $?获取函数返回值或者上一个命令的退出状态

    $? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1, ...

  9. system函数返回值,Linux

    理论 我们先看下man手册是怎么说的man system RETURN VALUEThe value returned is -1 on error (e.g., fork(2) failed), a ...

最新文章

  1. java动态代理【一】
  2. 李沐团队提出最强ResNet改进版,多项任务达到SOTA | 已开源
  3. react native 的TextInput组件问题
  4. MERGE语句——数据集横向合并
  5. List的remove(对象)操作有时候会报ConcurrentModificationException异常
  6. 基于java SSM springboot+redis网上水果超市商城设计和实现以及文档
  7. linux awk菜鸟教程,Linux awk 命令
  8. php 响应时间,PHP下解决ajax请求服务器响应时间过长问题
  9. python常用的库_这几个常用的python库你需要知道
  10. sed: sed command a expects followed by text
  11. Fuel 9.0安装Openstack由于NTP检查没通过导致失败--解决办法
  12. HTML5页面播放音乐
  13. Three.js案例分析系列1--webgl_animation_cloth 草坪上漂浮的白布
  14. java写的国有资产管理系统
  15. 00007__js自执行函数(function(){})()前加个分号是什么意思
  16. 【测试】优秀软件测试工程师必备的8个能力
  17. PAT甲级 A1031
  18. codelite14中文语言包_codelite中文版-codelite下载(开源的C++跨平台开发环境) 13.0.7 中文版 - 河东下载站...
  19. 24岁华为Java程序员工资表曝光,牛逼的人注定会牛逼
  20. Bandit:一款Python代码安全漏洞检测工具

热门文章

  1. python爬虫智能解析库详解
  2. 硬盘损坏及Ubuntu18.04双系统重装记录(实操不踩坑安装)
  3. Webp格式图片怎么转JPG?教你几种简单好用的转换方法
  4. CSDN问答频道“华章杯”1月排行榜活动开始,丰厚奖品等你拿
  5. 图片识别为什么大部分都将彩色图像灰度化
  6. KeyError: ‘Failed to format this callback filepath
  7. 网上商城项目(加入购物车)
  8. Bump Mapping
  9. 看《prison break》(越狱)体会项目管理
  10. Jmeter持续断言响应时间