免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2071 | 回复: 8
打印 上一主题 下一主题

[函数] linux 系统函数 read的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-27 10:39 |只看该作者 |倒序浏览
大家好,小弟请教一个问题

在分析strace输出的时候,发现有很多系统调用,其中有函数read
read(4, "\v", 1)                  = 1
read(4, "\n", 1)                  = 1
read(4, "\f", 1)                  = 1

这个函数传递的参数不一样,v,n,f
第一和第三个参数的含义,我都明白,但是第二个参数啥意思,搞不懂,请大侠指点下。

我百度read,但是没有任何结果。

或者哪位大侠告诉我哪里可以查到linux所有系统函数的文档

我的linux系统是centos 6.3

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2015-02-27 10:45 |只看该作者
这个应该是read那个buf参数当前的内容

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2015-02-27 10:46 |只看该作者
是输出参数,当前内容是啥没关系

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
4 [报告]
发表于 2015-02-27 11:35 |只看该作者
行走的小布鞋 发表于 2015-02-27 10:39
或者哪位大侠告诉我哪里可以查到linux所有系统函数的文档

系统函数
  1. $ man -S 2 read
复制代码
库函数
  1. $ man -S 3 read
复制代码
C/C++ 中很多库函数是对系统函数的封装。

论坛徽章:
0
5 [报告]
发表于 2015-02-28 10:09 |只看该作者
非常感谢回复 4# Monox


   

论坛徽章:
0
6 [报告]
发表于 2015-02-28 10:10 |只看该作者
输出参数怎么理解?我可以理解为,\n是从网络读出,\f是普通文件么?回复 3# hellioncu


   

论坛徽章:
0
7 [报告]
发表于 2015-02-28 10:14 |只看该作者
我看了下输出日志,read(4, "\n", 1)  = 1 <80.703129>,这个操作持续了80多秒,总共读入大概1g左右的数据,我做这个测试的时候,实际上跟踪的是ftp的进程,我往服务器上传了个一个1g的文件。如果1是count,他的单位是字节,我理解应该是满屏read才对,因为1g要调用n个read才能完成(1次只是一个字节嘛),不知道我这样的理解是不是对的回复 4# Monox


   

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
8 [报告]
发表于 2015-02-28 10:42 |只看该作者
回复 7# 行走的小布鞋

输出参数的意思是这个函数使用这个参数是用来作输出的,不是用来作输入的,所以它当前的值不重要,因为它的值会被覆盖掉。输出参数其实就是一个地址,read返回之后会把读到的内容写到这个地址所指向的地方。因为你使用了跟踪工具,它显示的时候把这个地址的当前内容显示出来了,因为是多次调用read,所以每次显示的内容不一定一样。

一般是读取不定大小文件的时候都是要循环调用 read的,既然指定一次只读一字节,当然你的文件有多大就要调用多少次 read 了。

论坛徽章:
0
9 [报告]
发表于 2015-02-28 10:56 |只看该作者
谢谢亲啦。嘿嘿回复 8# Monox


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP