在分析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 回复 1# 行走的小布鞋
第二个参数就是读出来的内容罗。你不是要每次读一个字节吗。
因为是字符串,strace帮你把内容给打印出来了。 读出来的字符串,怎么可能都是\n,\f之类的呢?回复 2# Tinnal
回复 3# 行走的小布鞋
这是转义字符。/n代表回车 /f是换页。
请看http://baike.baidu.com/link?url=2MB9jz1OHVaCCrr0mOGi8VO4XDQUM-WEPdsWQE1OjrgFMZJDkLHl3NhXEYywQHtblNm402Fa_Ltzm4_H9bqEwK root#echo 中国 > 测试
root#strace cat 测试
...
read(3, "\344\270\255\345\233\275\n", 32768) = 7
write(1, "\344\270\255\345\233\275\n", 7中国
) = 7
... 谢谢亲 回复 2# Tinnal
本帖最后由 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" 这行是代表什么?
谢谢 就算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
页:
[1]