当前位置: 技术问答>linux和unix
linux 的系统调用?
来源: 互联网 发布时间:2016-10-26
本文导语: 在window下面 系统提供的函数 我们叫做api 那么在linux下面 系统提供的函数 就叫做系统调用吗? 那么这些函数都或者说是类 都linux内核源码中提供的 对不? 比如说 我在编程的时候用到这样几个...
在window下面 系统提供的函数 我们叫做api
那么在linux下面 系统提供的函数 就叫做系统调用吗?
那么这些函数都或者说是类 都linux内核源码中提供的 对不?
比如说 我在编程的时候用到这样几个包含文件
#include
#include
#include
#include
那么这些头文件和源文件都是linux内核源码提供的吗?
小弟菜鸟 得先把这些简单的东西搞清楚了 否则越来越糊涂阿
那么在linux下面 系统提供的函数 就叫做系统调用吗?
那么这些函数都或者说是类 都linux内核源码中提供的 对不?
比如说 我在编程的时候用到这样几个包含文件
#include
#include
#include
#include
那么这些头文件和源文件都是linux内核源码提供的吗?
小弟菜鸟 得先把这些简单的东西搞清楚了 否则越来越糊涂阿
|
glibc
|
应用层的东西是由glibc提供的。
内核有自己实现的函数。
内核有自己实现的函数。
|
直接用rpm来查询就知道是属于哪个包了!
比如
#include
[root@rhel5 ~]# rpm -qf /usr/include/sys/time.h
glibc-headers-2.5-49
可以看出time.h属于glibc-headers包
#include
[root@rhel5 etc]# rpm -qf /usr/include/stdio.h
glibc-headers-2.5-49
可以看出stdio.h也属于glibc-headers包
比如
#include
[root@rhel5 ~]# rpm -qf /usr/include/sys/time.h
glibc-headers-2.5-49
可以看出time.h属于glibc-headers包
#include
[root@rhel5 etc]# rpm -qf /usr/include/stdio.h
glibc-headers-2.5-49
可以看出stdio.h也属于glibc-headers包
|
主席速度灰常快!佩服!
一般地,在/usr/include目录下的头文件是glibc的。——我们大部分的程序默认的头文件路径就是这样(当然,其它的如QT程序不在这里)。
内核提供的头文件一般在linux-x.y.z/include目录下。一般地,我们写内核驱动程序时可以只使用内核头文件(kernel-headers,不知道这样的说法行不行)而不用下载整个内核源代码,当然,使用完整的内核源代码也可以。
前者的例子正如你所列的;
后者的例子比如
#include
#include
看似很复杂,其实它们是不同的两个东西。
一般地,在/usr/include目录下的头文件是glibc的。——我们大部分的程序默认的头文件路径就是这样(当然,其它的如QT程序不在这里)。
内核提供的头文件一般在linux-x.y.z/include目录下。一般地,我们写内核驱动程序时可以只使用内核头文件(kernel-headers,不知道这样的说法行不行)而不用下载整个内核源代码,当然,使用完整的内核源代码也可以。
前者的例子正如你所列的;
后者的例子比如
#include
#include
看似很复杂,其实它们是不同的两个东西。
|
跟内核打交道有两种方式:系统调用和库函数。(两者都可以叫做API.)
系统调用是内核直接提供的。
库函数的实质还是调用了系统调用。
系统调用是内核直接提供的。
库函数的实质还是调用了系统调用。