Linux 下系统调用的三种方法

Linux 下系统调用的三种方法,第1张


系统调用(System Call)是 *** 作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。下面介绍Linux 下三种发生系统调用的方法:

通过 glibc 提供的库函数

glibc 是 Linux 下使用的开源的标准 C 库,它是 GNU 发布的 libc 库,即运行时库。glibc 为程序员提供丰富的 API(ApplicaTIon Programming Interface),除了例如字符串处理、数学运算等用户态服务之外,最重要的是封装了 *** 作系统提供的系统服务,即系统调用的封装。那么glibc提供的系统调用API与内核特定的系统调用之间的关系是什么呢?

  • 通常情况,每个特定的系统调用对应了至少一个 glibc 封装的库函数,如系统提供的打开文件系统调用sys_open对应的是 glibc 中的open函数;
  • 其次,glibc 一个单独的 API 可能调用多个系统调用,如 glibc 提供的printf函数就会调用如sys_open、sys_mmap、sys_write、sys_close等等系统调用;
  • 另外,多个 API 也可能只对应同一个系统调用,如glibc 下实现的malloc、calloc、free等函数用来分配和释放内存,都利用了内核的sys_brk的系统调用。

举例来说,我们通过 glibc 提供的chmod函数来改变文件etc/passwd的属性为 444:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2609064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存