Chinaunix

标题: 在分析strace输出的时候,发现有很多系统调用,其中有函数read [打印本页]

作者: 行走的小布鞋    时间: 2015-02-27 10:40
标题: 在分析strace输出的时候,发现有很多系统调用,其中有函数read
大家好,小弟请教一个问题

在分析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
作者: Tinnal    时间: 2015-02-28 00:21
回复 1# 行走的小布鞋


第二个参数就是读出来的内容罗。你不是要每次读一个字节吗。

因为是字符串,strace帮你把内容给打印出来了。
作者: 行走的小布鞋    时间: 2015-02-28 10:09
读出来的字符串,怎么可能都是\n,\f之类的呢?回复 2# Tinnal


   
作者: Tinnal    时间: 2015-02-28 22:01
回复 3# 行走的小布鞋


    这是转义字符。/n代表回车 /f是换页。
请看http://baike.baidu.com/link?url= ... 402Fa_Ltzm4_H9bqEwK
作者: 爻易    时间: 2015-03-01 09:12
root#echo 中国 > 测试
root#strace cat 测试
...
read(3, "\344\270\255\345\233\275\n", 3276 = 7
write(1, "\344\270\255\345\233\275\n", 7中国
) = 7
...
作者: 行走的小布鞋    时间: 2015-03-03 14:43
谢谢亲 回复 2# Tinnal


   
作者: shihyu    时间: 2015-03-07 02:37
本帖最后由 shihyu 于 2015-03-07 02:38 编辑


我也想问类似问题

strace echo "Hello"  2>&1 | grep -E 'read|write'
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\37\2\0\0\0\0\0"..., 832) = 832
write(1, "Hello\n", 6Hello

请问一下  "read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\37\2\0\0\0\0\0"..., 832) = 832" 这行是代表什么?

谢谢
作者: nswcfd    时间: 2015-03-12 12:16
就算echo "hello"内部简单到只有一句write(1, "hello", 6),任何elf文件的执行在进入main之前有一大段初始化工作,
这个read工作在fd=3上,你可以看看最近的一个open=3是打开哪个文件。

我试了一下
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\355\241\245:\0\0\0"..., 832) = 832




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2