免费注册 查看新帖 |

Chinaunix

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

如何知道系统调用的层次关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-17 09:32 |只看该作者 |倒序浏览
5可用积分
比如说 我调用printf函数
那么系统最终分别是调用的哪些函数呢
??
速度

最佳答案

查看完整内容

http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s02.html。你可以看看怎么使用strace,gdb我觉得应该不行吧,没用过。

论坛徽章:
0
2 [报告]
发表于 2008-09-17 09:32 |只看该作者
http://www.gnome.org/~newren/tut ... e/html/ch03s02.html
你可以看看怎么使用strace,gdb我觉得应该不行吧,没用过。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2008-09-17 09:44 |只看该作者

回复 #1 HJLin 的帖子

在不同的系统中,系统调用最终调用的函数是不一样的。比如说,read,write,系统调用进入内核后,一般是调用sys_read和sys_write,(大多数系统调用在内核空间的实现都是sys_XXXX),但实现又分为字符设备和块设备的区别了,字符设备和块设备又有很多类型(如串口字符设备,磁盘块设备,同时磁盘设备又包括通用磁盘,flash等等)。所以,底层驱动的实现是个未知数,只能根据具体的系统来讨论。
你提到的printf,它实际上是一个标准库函数,而并非系统调用(系统调用是用户空间进入内核空间的入口点)。如果你细心阅读源代码,可以看到printf-->write,即printf实际上是调用了write这个系统调用,如果存在对应的终端,则write把对应的输出显示到终端设备上,这些可以说是具体底层驱动的实现了。

论坛徽章:
0
4 [报告]
发表于 2008-09-17 09:49 |只看该作者
你可以安装一个strace,这样就能看你可执行文件的系统调用。

论坛徽章:
0
5 [报告]
发表于 2008-09-17 09:51 |只看该作者

回复 #2 dreamice 的帖子

谢谢!
但是不是很清楚,可以用什么工具gdb之类的查看吗?
就是说printf 最终还是调用了系统调用吧!

论坛徽章:
0
6 [报告]
发表于 2008-09-17 09:54 |只看该作者
我先看看先

论坛徽章:
0
7 [报告]
发表于 2008-09-17 09:58 |只看该作者
你去看源代码最好。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [报告]
发表于 2008-09-17 10:15 |只看该作者
原帖由 HJLin 于 2008-9-17 09:51 发表
谢谢!
但是不是很清楚,可以用什么工具gdb之类的查看吗?
就是说printf 最终还是调用了系统调用吧!


gdb只能跟踪应用程序,而系统调用是进入内核空间的接口,对于内核的跟踪,gdb将显得无能为力。
printf最终调用了write这个系统调用,而write调用了底层的sys_write,然后调用相应的驱动程序,并输出到终端。你只要知道这条线,然后看源代码,可能理解会更好一些。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2008-09-17 10:17 |只看该作者
原帖由 HJLin 于 2008-9-17 09:32 发表
比如说 我调用printf函数
那么系统最终分别是调用的哪些函数呢
??
速度


老大,分都散了啊,不知道都给谁了

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
10 [报告]
发表于 2008-09-17 10:28 |只看该作者
原帖由 dreamice 于 2008-9-17 10:17 发表


老大,分都散了啊,不知道都给谁了

在二楼可以看到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP