摘要: 标准I/O实现了三种类型的用户缓冲,并为开发者提供了接口,可以控制缓冲区类型和大小。 无缓冲(Unbuffered) 不执行用户缓冲。数据直接提交给内核。因为这种无缓冲模式不支持用户缓冲(用户缓冲一般会带来很多好处),通常很少使用,只有一个例外:标准错误默认是采用无缓冲模式。 行缓冲(Line-bu 阅读全文
posted @ 2016-04-01 10:17 Kjing 阅读(514) 评论(0) 推荐(0) 编辑
摘要: Linux 的文件通常分为 7 大类 文件类型 缩写 英文名称 普通文件 - Regular file 目录文件 D Directory file 块设备文件 B Block special file 字符设备文件 C Character special file 命名管道文件 F FIFO 或 n 阅读全文
posted @ 2016-03-08 15:43 Kjing 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 【摘自C++Primer】 引用(这里指左指引用) 引用为对象起了另外一个名字。引用并非对象,相反的,它只是为一个已存在的对象所起的另外一个名字。 一般在初始化对象时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它 阅读全文
posted @ 2016-03-01 10:16 Kjing 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 从某种角度,可将信号视为进程间通信(IPC)的方式之一。然而,信号作为一种 IPC 机制却也饱受限制。首先,与其他 IPC 方法相比,对信号编程既繁且难,具体原因如下: 信号的异步本质就意味着需要面对各种问题,包括可重入性需求、竞争条件及在信号处理器中正 阅读全文
posted @ 2016-02-15 14:58 Kjing 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 较之于标准信号,实时信号的优势如下: 实时信号的信号范围有所扩大,可应用于应用程序自定义的目的。而标准信号中可供应用随意使用的信号仅有两个:SIGUSR1 和 SIGUSR2。 对实时信号所采取的是队列化管理。如果将某一实时信号的多个实例发送给一进程,那 阅读全文
posted @ 2016-02-15 14:18 Kjing 阅读(2287) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 核心转储文件 特定信号会引发进程创建一个核心转储文件并终止运行。所谓核心转储是内含进程终止时内存映像的一个文件。将该内存映像加载到调试器中,即可查明信号到达时程序代码和数据的状态。 从 Linux 版本 2.6 开始,可以根据 Linux 特有的 /pr 阅读全文
posted @ 2016-02-14 16:31 Kjing 阅读(374) 评论(0) 推荐(1) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 一般而言,将信号处理器函数设计的越简单越好。其中一个重要原因就在于,这将降低引发竞争条件的风险。下面是针对信号处理器函数的两种常见设计: 信号处理器函数设置全局性标志变量并退出。主程序对此标志进行周期性检查,一旦被置位随即采取相应动作。(主程序若因监控一 阅读全文
posted @ 2016-02-06 10:48 Kjing 阅读(1681) 评论(0) 推荐(1) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 信号集 sigemptyset() 函数初始化一个未包含任何成员的信号集。sigfillset() 函数则初始化一个信号集,使其包含所有信号(包括所有实时信号)。 #include <signal.h> int sigemptyset(sigset_t* 阅读全文
posted @ 2016-02-05 10:59 Kjing 阅读(1722) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 每个信号都有一串与之相关的可打印说明。这些描述位于数组 sys_siglist 中。例如,可以用 sys_siglist[SIGPIPE] 来获取 SIGPIPE 信号(管道断开)的描述。然而,较之于直接饮用 sys_siglist 数组,还是推荐使用 阅读全文
posted @ 2016-02-04 13:50 Kjing 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 【摘自《Linux/Unix系统编程手册》】 kill() 一个进程能够使用 kill() 系统调用向另一个进程发送信号。(之所以选择 kill 作为术语,是因为早期UNIX实现中大多数信号的默认行为是终止进程) #include <signal.h> int kill(pid_t pid, int 阅读全文
posted @ 2016-02-04 10:53 Kjing 阅读(836) 评论(0) 推荐(0) 编辑