摘要:
[TOC] 由Linux内核提供的基本时间是自1970 01 01 00:00:00 +0000 (UTC)这一特定时间以来经过的秒数,这种描述是以数据类型time_t表示的,我们称其为日历时间。 获得日历时间的函数有3个:time、clock_gettime和gettimeofday。 time函 阅读全文
摘要:
[TOC] 1. 文件类型 Linux下一切皆文件,但文件也分为7种类型,文件类型信息包含在struct stat结构的st_mode成员中,可以用下表中的宏来检测文件类型,这些宏的参数都是stat.st_mode。 | 文件类型 | 说 明 | 检测文件类型的宏 | | | | | 普通文件 | 阅读全文
摘要:
[TOC] 1. IO模型 Linux下可用的IO模型有5种,分别是: 阻塞式IO 非阻塞式IO IO复用 信号驱动式IO(SIGIO) 异步IO(Posix的aio_系列函数) 其中,除了异步IO,其余都属于同步IO模型。 在这5种模型中,我们目前只关注前3种,并且把IO复用放在网络编程专题中讲, 阅读全文
摘要:
[TOC] 1. 函数重载回顾 函数重载的本质为相互独立的不同函数 C++通过函数名和函数参数确定函数调用 无法直接通过函数名得到重载函数的入口地址 函数重载必然发生在同一个作用域中 2. 类中的函数重载 类的成员函数可以进行重载,包括 构造函数的重载 普通成员函数的重载 静态成员函数的重载 注意: 阅读全文
摘要:
[TOC] 1. 系统调用IO(无缓冲IO) 系统调用 在Linux中一切皆文件,文件操作在Linux中是十分重要的。为此, Linux内核提供了一组用户进程与内核进行交互的接口用于对文件和设备进行访问控制,这些接口被称为系统调用。 系统调用对于应用程序最大的作用在于: 以统一的形式,为应用程序提供 阅读全文
摘要:
[TOC] 1. 静态成员变量 先来回顾一下普通成员变量 通过对象名能够访问public成员变量 每个对象的普通成员变量都是专属的,不能在对象之间共享 在C++中还可以定义静态成员变量 静态成员变量属于整个类所有,所有对象共享类的静态成员变量 静态成员变量的生命周期不依赖于任何对象 可以通过类名和对 阅读全文
摘要:
[TOC] 1. 管道(无名管道) pipe函数 管道由pipe函数创建,提供一个单向半双工数据流,它没有名字,只能在父子进程间使用。 pipe通过参数fd[2]返回两个文件描述符:fd[0]用于读,fd[1]用于写,管道的典型的用法如下: 父进程创建一个管道,然后调用fork创建子进程 父进程关闭 阅读全文
摘要:
[TOC] 1. 析构函数 C++的类中可以定义一个特殊的清理函数,叫做析构函数,语法规则为 析构函数没有参数,也没有返回值类型声明 析构函数在对象销毁时自动被调用 当类中自定义了构造函数,并且构造函数中使用了系统资源(如:堆空间、文件打开,等),则需要自定义析构函数 2. 对象的构造与析构顺序 多 阅读全文
摘要:
[TOC] 1. 概述 System V共享内存在概念上类似于Posix共享内存,代之以调用shm_Open后调用mmap的是,先调用shmget,再调用shmat。 对于每个System V共享内存,内核都维护如下的信息结构,它定义在sys/shm.h头文件中,其中带注释的是我们需要关注的成员。 阅读全文
摘要:
[TOC] 1. 概述 System V消息队列使用消息队列标识符标识,和Posix消息队列一样,发送消息和接收消息的线程(进程)是相互独立、互不依赖的。 对于系统中的每个消息队列,内核维护一个定义在sys/msg.h头文件中的结构,其中带注释的是我们需要关注的成员变量。 2. 消息队列API ms 阅读全文