![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统调用
最快乐的寂寞是独处
最寂寞的快乐是无敌
展开
-
应用程序如何直接调用一个系统调用, 不经过C库?
通常应用程序是怎么访问系统调用的?应用程序通常不会直接访问系统调用, 一般都是通过C库来访问系统调用.我们通常说的, 写个应用程序, 调某个系统调用, 其实也不是真的直接调用系统调用, 而是调用C库(一般是glbic)封装的函数, 而这个封装的函数的函数名跟系统调用名称相同, 比如写个程序,打开某个文件, 将其内容输出来, 这里面我们看似调用了open(), read(), write()这些"系统调用", 实际也是glibc封装过的, 跟Linux相应的系统调用, 同名的函数, 而非真的系统调用本原创 2020-09-20 08:04:00 · 1690 阅读 · 3 评论 -
系统调用定义宏 SYSCALL_DEFINEx 的分析
了解系统调用的同学, 应该知道, 系统调用在内核中的入口都是sys_xxx, 比如read()系统调用在内核的入口就是sys_read(). 但查看内核源码会发现, 内核中并没有sys_xxx()这样的函数, 根本就无法搜到sys_xxx()函数的定义与实现.其实, Linux内核中的系统调用, 都是经过一个叫SYSCALL_DEFINEx的宏展开出来的, 没展开之前, 是无法搜到sys_xxx()的.本文就是分析定义系统调用的宏SYSCALL_DEFINEx的实现.这里以open()这个系统调用为例原创 2020-09-17 07:35:59 · 2347 阅读 · 0 评论