C
Loopers
操作系统爱好者
展开
-
cdecl、stdcall、fastcall函数调用约定区别
论函数调用约定 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保转载 2014-04-24 08:44:02 · 659 阅读 · 0 评论 -
变长数组
1、前言今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0]。这样设计的目的是让数组长度是可变的,根据需要进行分配。方便操作,节省空间。2、data[0]结构经常遇到的结构形状如下:struct buffer{转载 2016-10-12 14:32:41 · 525 阅读 · 0 评论 -
Inotify机制
描述Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。此种机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。Inotify APIinotify_init(void)用于创建一个inotify的实例,然后返原创 2017-01-04 14:14:13 · 12893 阅读 · 0 评论 -
Epoll 机制
描述epoll 是poll系统调用的升级版。可以用做单边沿(level-triggered)和双边沿(edge-triggered)的两种工作模式,同样也可以用于检测多个文件描述符。 APIepoll_create(int size)用于创建一个epoll的实例对象。参数size代表可以一次性检测的文件对象的个数。返回值是epoll 实例对象的文件描述符,次描述符用于后续的原创 2017-01-04 17:14:12 · 840 阅读 · 0 评论 -
socketpair机制
描述先看下传统的CS模型,如下:总是一方发起请求,等待另一方回应。当一次传输完成之后,client端发起新的请求之后,server端才作出回应。 那如何才能做到双向通信? 一种解决办法就是client端即使client,又是server,server端即使client也是server,如下:但是上述方面比较复杂,这时候就引入要分析的socketpair了。原创 2017-01-05 11:25:36 · 9175 阅读 · 1 评论