- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 设计模式C++版_1_简单工厂模式
本文是学习设计模式的学习笔记,文中引用了如下作者(书籍、博客)的内容,实例程序在《设计模式C++版》的基础上有所改动,特此声明。Peixing Yang的《大话设计模式C++源代码》程杰的《大话设计模式》K_Eckel的《设计模式C++版》 http://k-eckel.cnblogs.com/EoF的cbf4life的《24种设计模式介绍与6大设计原则》 http
2013-06-17 19:02:25
531
原创 C++ Templates读书笔记1__函数模板
本文是《C++ Templates》一书的学习笔记,如果发现有错误或者不明确的地方,欢迎指正,如果对本文有更好的建议,同样也欢迎提出,谢谢。模板是泛型编程的基础,所谓泛型编程,就是以独立与任何特定类型的方式编写代码。函数模板的示例:template inline const T &max(const T &a, const T &b){ T tmp = (a > b) ?
2013-06-04 15:45:11
848
原创 explicit关键字
今天在研读google c++编码规范时,在构造函数一节中提到了explicit关键字,规范中要求“对单参数构造函数使用C++关键字explicit”。原文定义为:Normally, if a constructor takes one argument, it can be used as a conversion. For instance, if you define Foo:
2013-05-24 13:17:40
734
原创 socket创建流程及代码示例
socket操作1.1 创建socketint socket(int domain, int type, int protocol); domain: 确定通信的特性 AF_INET IPv4因特网域 AF_INET6 IPv6因特网域
2013-05-24 11:04:02
759
原创 消息队列创建流程及代码示例
消息队列是消息的链接表,存放在内核中并由消息队列标示符标识。1. 创建或打开一个队列 int msgget(key_t key, int flag); key: 键 由ftok()生成 key_t ftok(const char* path, int id); flag: IPC_CREAT 或 IPC_EXCL
2013-05-24 11:03:59
1192
原创 信号及代码示例
1. 信号的概念 每个信号都有一个以SIG开头的名字。 在头文件中,这些信号都被定义为正整数。不存在编号为0的信号。 在信号发生的时候,可以进行一下处理: 1)忽略此信号,有两种信号不能被忽略(SIGKILL,SIGSTOP)。 2)捕捉信号,通知内核在某种信号发生时调用一个用户函数。 3
2013-05-24 11:03:57
892
原创 【APUE】进程控制
本文介绍进程控制,包括创建进程,执行程序和进程终止1.进程标识符 每一个进程都有一个非负整数表示的唯一进程ID,pid。虽然pid是唯一的,但是可以重复使用,当进程结束的时候, 其pid就可以在次使用了。 系统中常有一些专用进程: 0:通常是调度进程,常称为交换进程,因为不使用磁盘中的任何程序,所以又称为系统进程。 1:通常是init进
2013-05-24 11:03:55
590
原创 C字符串函数总汇解析
C字符串函数总汇解析函数名: stpcpy功 能: 拷贝一个字符串到另一个用 法: char *stpcpy(char *destin, char *source);程序例:#include #include int main(void){char string[10];char *str1 = "abcdefghi";stpcpy(string, str1);printf("%sn", stri
2013-05-24 11:03:53
559
原创 【APUE】进程环境
本文章介绍进程的环境1.main函数 c程序总是从main函数开始执行的,其原型是 int main(int argc, char **argv); //argc是命令行参数的个数 //argv是指向参数的各个指针所构成的数组2.进程终止 有8种方式可以让进程终止,其中前5种为正常终止 1.从main返回 2.调用exit 3
2013-05-24 11:03:50
407
原创 【APUE】系统数据文件和信息
本文章介绍有关系统数据文件和信息的函数1.一切皆文件 linux操作系统的特点就是一切皆文件,所以仅通过操作文件就可以操作linux的所有。2.口令文件 /etc/passwd 这些字段定义在中定义的passwd结构中 char *pw_name //用户名 char *pw_passwd
2013-05-24 11:03:48
543
原创 【APUE】标准I/O库
本文章说明标准I/O库1.流和FILE对象 对于文件IO都是针对于文件描述符的,但是对于标准I/O,则是针对于流进行的 当用标准I/O库打开一个文件的时候,我们已使一个流和一个文件相关联 对于ASCII字符集,一个字符用一个字节表示,对于国际字符,一个字符可用多个字节表示 标准I/O文件流可用于单字节或多字节字符集 流的定向决定了所读、写的文件
2013-05-24 11:03:46
438
原创 关于指针的一个面试题
前几天,去一个公司面试实习生,遇到下面这个题: void test(void){ char *str = NULL; get_memory(str); strcpy(str, "hello world"); printf("%s\n", str);}voidget_memory(char *p){ p = (char *)
2013-05-24 11:03:43
421
原创 【APUE】文件和目录
本文章将描述文件系统的其他特性和文件的性质。1 stat、fstat、和lstat函数 获取文件的信息结构 #include int stat(const char *restrict pathname, struct stat * restrict buf); int fstat(int filedes, struct stat *buf);
2013-05-24 11:03:41
460
原创 【APUE】文件I/O
1 文件描述符 所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数,本质是一个数组下标。 当打开或创建一个文件的时候,内核向进程返回一个文件描述符。 open,creat返回文件描述符来标识该文件,将其作为参数传递给write和read。 UNIX系统shell使用文件描述符0与进程的标准输入相关联,1和标准输出相关联,2和标准错误输出相关联。:2 open函数
2013-05-24 11:03:39
448
原创 【内核&驱动】并发和竞态【1】
1.导致并发执行的原因 硬件中断服务 SMP(对称多处理) 内核抢占 schedule()2.scull的缺陷if(!dptr->data[s_pos]){ dptr->data[s_pos]= kmalloc(quantum, GFP_KERNEL); if(!dptr->da
2013-05-24 11:03:36
454
原创 【内核&驱动】字符设备驱动程序【3】
open和releaseopen方法提供给驱动程序以初始化的能力,open方法应完成以下工作 检查设备特定的错误 如果设备是首次打开,则对其进行初始化工作 如有必要,更新f_op组件 分配并填写置于filp->private_data里的数据结构int(*open)(struct inode*inode, struct
2013-05-24 11:03:34
490
原创 【内核&驱动】字符设备驱动程序【2】
一些重要的数据结构(VFS核心结构体) 1.super_block和mount一一对应,这也意味着如果mount操作,在内核中分配新的结构体,存储分区信息umount时,VFS就把该结构体释放掉mount几次内核中就有几个super_block结构体2.inode和打开文件一一对应,记录文件信息,关闭文件时,如果内存不紧张,不会释放,如果多个人同时打开一个文件,VF
2013-05-24 11:03:32
362
原创 【内核&驱动】字符设备驱动程序【1】
1.编写驱动程序的第一部就是定义驱动程序为用户提供的能力(机制);2.举例在计算机内存之上实现若干设备抽象:scull:simple character Utility for Loading Localities, 区域装载的简单字符工具 scull的源代码实现了以下设备scull0 ~ scull3 这四个设备分别由一个全局且持久的内存区域组成scu
2013-05-24 11:03:30
488
原创 cdev结构
在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构,在写驱动时,
2013-05-24 11:03:27
481
原创 linux 系统调用执行过程
linux 系统调用执行过程 转载简单总结一下linux的系统调用过程:层次如下:用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序先说明一下,我们常说的用户API其实就是系统提供的C库。系统调用是通过软中断指令 INT 0x80 实现的,而这条I
2013-05-24 11:03:25
687
原创 C语言预处理命令总结大全
C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境。本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。ANSI标准定义的C语言预处理程序包括下列命令:#define,#error,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,
2013-05-24 11:03:23
377
转载 一份比较详细的DOS命令说明
1 echo 和 @ 回显命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显。一般批处理第一行都是这个 echo on #从下一行开始打开回显 echo
2009-12-02 15:59:00
277
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人