我来试着谈谈我的看法: 首先从`man man`中可以看到: 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard]
可见man2讲的是kernel提供的系统调用,man3讲的是库函数,这两个是有一点点区别的。应用程序一般不会去直接调用系统调用,应用程序调用libc,libc再调用kernel提供的系统调用。库函数一般和系统调用一一对应,但也有例外,比如exec在libc库中有数个函数,但对应系统调用仅有一个。再比如printf没有一个直接对应的系统调用,当然它最终要通过调用write来实现功能。 下面再看看man2是哪个软件包提供的: zhi@zhi-laptop:/usr/share/man/man2$ dpkg -S /usr/share/man/man2 manpages-dev, libapparmor1, manpages: /usr/share/man/man2 可见manpages提供了那些man2文件,再看manpages: zhi@zhi-laptop:~$ apt-cache showsrc manpages Package: manpages Binary: manpages, manpages-dev ... Homepage: http://www.kernel.org/doc/man-pages/ ... 可见man2文件实际是由kernel开发组织提供的。 至于man3,那可就多了: zhi@zhi-laptop:/usr/share/man/man2$ dpkg -S /usr/share/man/man3 libpackage-stash-xs-perl, libpango-perl, libxml-parser-perl, libxml-libxml-perl, libuuid-perl, libpcre3, libclass-isa-perl, librdf0, libwww-robotrules-perl, libhttp-daemon-perl, libyaml-tiny-perl, iproute, libdpkg-perl, libssl-doc,... 结论是:1. 不矛盾,一个讲的是系统调用,一个讲的是库函数;2. man2主要是kernel提供的,man3是由各个库的开发组织提供的,与kernel无关。 李志 2012/8/15 YunQiang Su <wzss...@gmail.com>: > man2 来自内核, man3 来自libc > > 2012/8/15 Plain_Text <resat...@gmail.com>: >> >> >> 2012-08-15(Wednesday) 14:26:49 +0800, wd <w...@wdicc.com>: >> >> >>> 建议你有功夫发这种帖子,不如花时间两个文档都看看,看看是不是真的有区别,区别在什么地方,有错误就报告给社区。 >> >> >> >> 张三与李四是两个技术牛人,对某项技术各自写了一本书。一个小菜鸟想学习 >> 该技术,但是时间和精力都有限,于是想从两个牛人的书中挑选出一本来做参考。 >> 小菜鸟想:“如何两个牛人联合起来共同写一本书,该多好呀!这样,我就不用在 >> 两者之间犹豫该选哪一本了。”可是,他知道这没有可能性:因为两个牛人有些矛 >> 盾,不愿意共同写书。于是该小菜鸟向其他人请教,问问其他人:“两个牛人的书, >> 哪本更权威?” >> >> 不过,小菜鸟没有得到正面的回复。只听见:“建议你有功夫问这种问题,不 >> 如花时间两本书都看看……” >> >> >> 本来只想请教一下,没想到变成了 Flame War. 抱歉。 >> >> >> >> >> >> -- >> To UNSUBSCRIBE, email to debian-chinese-gb-requ...@lists.debian.org >> with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org >> Archive: http://lists.debian.org/20120815072124.GB3672@localhost.localdomain >> > > > > -- > YunQiang Su