摘要: 【摘自《Linux/Unix系统编程手册》】 Unix系统提供了两种方式来改变信号处置:signal() 和 sigaction()。 signal() 的行为在不同Unix实现间存在差异,这也意味着对可移植性有所追求的程序绝不能使用此调用来建立信号处理函数。故此,sigaction() 是建立信号 阅读全文
posted @ 2016-02-03 14:39 Kjing 阅读(3197) 评论(0) 推荐(1) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 概述 信号是事件发生时对进程的通知机制。有时也称之为软件中断。信号和硬件中断的类似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。 一个(具有合适权限的)进程能够向另一个进程发送信号。信号的这一用法可作为一种同步技术,甚至是进 阅读全文
posted @ 2016-02-03 11:39 Kjing 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】自内核2.6.13起,Linux开始提供inotify机制,以允许应用程序监控文件事件。使用inotify API有以下几个关键步骤:应用程序使用 inotify_init() 来创建一个inotify实例,该系统调用所返回的文件描述符用于在后续操作中指代... 阅读全文
posted @ 2016-01-20 13:48 Kjing 阅读(2866) 评论(0) 推荐(0) 编辑
摘要: 【摘自Linux/Unix系统编程手册】函数的调用和返回使栈的增长和收缩呈线性。X86-32体系架构上的Linux(和大多数其它Linux和Unix的实现),栈驻留在内存的高端并向下增长(朝堆的方向)。专用寄存器--栈指针(stack pointer),用于跟踪当前栈顶。每次调用函数时,会在栈上新分... 阅读全文
posted @ 2015-12-28 13:41 Kjing 阅读(2983) 评论(0) 推荐(1) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】进程和程序进程(process)是一个可执行程序(program)的实例。程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程,包含如下内容:二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息(metainformation)... 阅读全文
posted @ 2015-12-23 14:56 Kjing 阅读(9640) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】所有系统调用都是以原子操作方式执行的。这里是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性执行,其间不会为其它进程或线程所中断。原子性是某些操作得以圆满成功的关键所在。特别是它规避了竞争状态(race conditions)。竞争状态是这样一种情... 阅读全文
posted @ 2015-12-17 16:08 Kjing 阅读(2729) 评论(0) 推荐(1) 编辑
摘要: 编写一个简单的程序#include int main(){ printf("Hello world\n"); return 0;}编译gcc test.c查看glibc的位置ldd a.out | grep libc在我的机器上显示libc.so.6 => /lib/i3... 阅读全文
posted @ 2015-10-23 15:28 Kjing 阅读(1537) 评论(0) 推荐(0) 编辑