创建一个新进程的方法只有由某个已存在的进程调用fork()或vfork(),当然某些进程如init等是作为系统启动的一部风而被内核创建的。1.fork函数介绍#include sys/types.h>#include unistd.h>pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;(单调用双返回函数)错误返回:-1;子进程是父进程的一个拷贝。具体说,子进程从父进程那得到了数据段和堆栈段,但不是与父进程共享而是单独分配内存。fork函数返回后,子进程和父进程都是从fork函数的下一条语句开始执行。由于子进程与父进程的运行是无关的,父进程可 Read More
posted @ 2012-10-19 10:09 星语海蓝 Views(299) Comments(0) Diggs(0) Edit
/************pthread_cond_wait()的使用方法**********/ pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock); pthread_mutex_unlock(&qlock);/*****************************************************/The mutex passed to pthread_cond_wait protects the condition.The callerpasses it locked Read More
posted @ 2012-10-18 17:35 星语海蓝 Views(319) Comments(0) Diggs(0) Edit
昨晚被@童老猪问到了两者的区别,我以前觉得自己大概搞懂了,昨晚发现还是没懂。今天查了一下资料,写下自己的理解,以备以后查阅。我们都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?我觉得,对于编程人员,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。具体的说:1。以哪种方式打开一个文件?ANSI C规定了标准输入输出函数库,用fopen()函数打开文件。fopen()函数的调用方式一般为:FILE *fp;fp=fopen(文件名,使用文件方式);使用文件方 Read More
posted @ 2012-10-18 09:34 星语海蓝 Views(3848) Comments(0) Diggs(0) Edit
什么是类型安全?类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。C语言的类型安全C只在局部上下文中表现出类型安全,比如试图从一种结构体的指针转换成另一种结构体的指针时,编译器将 Read More
posted @ 2012-10-17 19:47 星语海蓝 Views(335) Comments(0) Diggs(0) Edit
复制构造函数(copy constructor):单个对本类类型引用形参(常用const修饰)。当定义一个新对象并用同一个类型的对象对它进行初始化式,将显式使用复制构造函数,当该类型的对象传递给函数或从函数返回该类类型的对象时,将隐式调用复制构造函数。复制构造函数的形参可以不为const,但必须是一个引用。否则每当以pass-by-value传递参数时,调用一个复制构造函数都会导致无穷递归。如果不定义复制构造函数,编译器将合成一个,因此若要完全禁止复制(iostream类就不允许复制),禁止用户复制该类类型而且连友元和成员函数都不能进行复制:在private中声明但不定义一个复制构造函数。用户 Read More
posted @ 2012-10-11 16:35 星语海蓝 Views(245) Comments(0) Diggs(0) Edit
C++中static类数据成员是指以下两种: 类static成员函数 和 类static数据成员一:使用类的static成员的优点 1:static成员的名字是在类的作用域中,因此可以避免与其他类的成员或者全局对象名字的冲突 2:可以实施封装。static成员可以是私有成员,而全局对象不可见 3:通过阅读程序容易看出来static成员与特定类关联的。二:static成员的定义 static成员遵循正常的共有/私有访问规则,不过都可以通过 classname::成员 进行访问,不论成员是私有还是共有三:使用类的static成员 对类的static成员的使用以下几种方式都可以 通过cla... Read More
posted @ 2012-10-10 17:07 星语海蓝 Views(1751) Comments(0) Diggs(1) Edit
来自:http://blog.csdn.net/wbj1234566/article/details/2256642简单的讲:把类外部的类或函数声明为友元类和友元函数,使其能直接访问类中的私有成员。格式: friend 类 或 函数 声明//此语句可以放在类中的任意位置,与访问权限保留字无关。需要注意几个方面:1.友元关系是不可以传递的。比方说你是我的友元而Joe是你的友元,但这并不意味着Joe是我的友元。2.友元关系不能继承。3.友元关系不是互通。把class A设置为class B的友元并不会使得class B成为class A的友元,也许你愿意把你的秘密告诉我,但是,这并不意味着我愿意把 Read More
posted @ 2012-10-10 16:44 星语海蓝 Views(249) Comments(0) Diggs(0) Edit
一些成员函数改变对象,一些成员函数不改变对象。例如: int Point::GetY(){return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: void Point:: SetPt (int x, int y){xVal=x;yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明: class Point { public:int GetX() const;int GetY() const;void SetPt (int, int);void OffsetPt (int, int);priva. Read More
posted @ 2012-10-10 12:30 星语海蓝 Views(222) Comments(0) Diggs(0) Edit
关联容器与顺序容器的本质区别在于:关联容器是通过键(key)存储和读取元素的,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器支持通过键来高效地查找和读取元素,两个基本的关联容器是map和set。map的元素是“键-值”对的二元组形式:键用作元素在map中的索引,而值则表示所存储和读取的数据。set仅包含一个键,并有效地支持关于某个键是否存在的查询。set和map类型的对象所包含的元素都具有不同的键。如果需要一个键对应多个实例,则需要使用multimap或multiset类型。这两种类型允许多个元素拥有相同的键。map 关联数组:元素通过键来存储和读取 set 大小可变的... Read More
posted @ 2012-10-08 15:07 星语海蓝 Views(4311) Comments(0) Diggs(0) Edit
dynamic_cast <new_type> (expression)dynamic_cast运算符,应该算是四个里面最特殊的一个,因为它涉及到编译器的属性设置,而且牵扯到的面向对象的多态性跟程序运行时的状态也有关系,所以不能完全的使用传统的转换方式来替代。但是也因此它是最常用,最不可缺少的一个运算符。与static_cast一样,dynamic_cast的转换也需要目标类型和源对象有一定的关系:继承关系。 更准确的说,dynamic_cast是用来检查两者是否有继承关系。因此该运算符实际上只接受基于类对象的指针和引用的类转换。从这个方面来看,似乎dynamic_cast又和re Read More
posted @ 2012-10-03 16:47 星语海蓝 Views(230) Comments(0) Diggs(0) Edit