系统调用从glibc库到内核的追踪(open函数)

http://blog.chinaunix.net/uid-29401328-id-4866849.html

前面说了glibc以及标准C库函数和系统调用,但总感觉有点隔靴挠痒,下面就来追踪一下系统调用的源码。(linux-3.3内核,glibc-2.17源码)

系统调用以open函数为例
怎么查呢?
用  man 2 open 查看open的用法,看到需要包含三个头文件sys/types.h、sys/stat.h、fcntl.h,看了一下前两个,不相关,
好像是fcntl.h,但这个头文件里也没给出open的定义,但这个头文件又包含了一个头文件io/fcntl.h,跟下去,看到168行:

extern int open (const char *__file, int __oflag, ...) __nonnull ((1));

引进了open函数,查找它的定义(我用的是source insight,直接按住Ctrl点击函数,就可以跳到该函数定义的地方),出现三个宏两个定义,oldfileops.c和fileops.c参数不匹配,另一个宏不可以,fcntl2.h里的也不像。应该是loadmsgcat.c里的
# define open(name, flags) open_not_cancel_2 (name, flags)

此时open_not_cancel_2对应glibc-2.17\sysdeps\unix\sysv\linux\Not-cancel.h 26行
#define open_n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值