C++
文章平均质量分 86
桂成林
这个作者很懒,什么都没留下…
展开
-
6点
Keep it simple - complexity will come naturally over time.Automate everything, including failure recovery.Iterate your solutions - be prepared to throw away a working component when you want t翻译 2014-10-29 17:41:09 · 633 阅读 · 0 评论 -
简单信号处理
#include #include #include /* * SIGHUP: 从终端上发出的结束信号 * SIGINT: 来自键盘的中断信号(Ctrl-C) * SIGQUIT:来自键盘的退出信号(Ctrl-\) * SIGFPE: 浮点异常信号(例如浮点运算溢出) * SIGKILL:该信号结束接收信号的进程 * SIGALRM:进程的定时器到期原创 2012-09-05 17:08:22 · 577 阅读 · 0 评论 -
有名管道
fifo_write.c#include #include #include #include #include #include #include #define FIFO_SERVER "/tmp/myfifo"int main(int argc, char** argv){ int fd; char w_buf[100];原创 2012-09-05 15:24:45 · 393 阅读 · 0 评论 -
登记信号集
sigaction.c#include #include #include #include #include void my_func(int signum){ printf("if you want to quit,please try SIGOUIT\n");}int main(){ sigset_t set, pendse原创 2012-09-05 20:13:57 · 520 阅读 · 0 评论 -
流管道
标准流管道与linux中文件操作有文件流的标准I/O一样,管道的操作也支持基于文件流的模式。接口函数如下:库函数:popen();原型:FILE *open (char *command,char *type);返回值:如果成功,返回一个新的文件流。如果无法创建进程或者管道,返回NULL。管道中数据流的方向是由第二个参数type控制的。此参数可以是r或者w,分别代表读或写。但不能同原创 2012-09-04 15:37:46 · 692 阅读 · 0 评论 -
c++ explicit
String s1 = 10;分配10个字节的空字符串String s2 = 'a';分配int(‘a’)个字节的空字符串隐式转换成了分配若干字节的空字符串,容易令人误解。为了避免这种错误的发生,我们可以声明显示的转换,使用explicit 关键字:class String{explicit Stirng(int n)//本意是预先分配n个字节给字符串{原创 2012-07-30 15:21:48 · 524 阅读 · 0 评论 -
c ip2long
#include #include #include #include int main(){ struct in_addr addr; const char * const straddr = "192.168.0.1"; int ret = inet_aton(straddr,&addr);原创 2012-08-10 17:21:43 · 760 阅读 · 0 评论 -
strrep()函数的实现
char* strrep(const char* src, const char* from, const char* to){}#include string.h>#include malloc.h>char* strrep(const char* src, const char* from, const char* to){ char *des,原创 2012-08-10 16:47:08 · 4383 阅读 · 0 评论 -
automake,autoconf使用详解
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了.在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的 Makefile,这样就可以象常见的 GNU程序一原创 2012-07-12 11:57:20 · 762 阅读 · 0 评论 -
c++ string 简单应用一
#include #include using namespace std;inline void test(const char *title, bool value){ cout }int main(){ string s = "DEF"; cout string m; co原创 2012-07-07 21:10:09 · 634 阅读 · 0 评论 -
c++ 指向类的静态成员的指针
对类的静态成员的访问不依赖于对象可以用普通的指针来指向和访问静态成员例:#include using namespace std;class point{ public: point(int xx=0, int yy=0) { X = xx; Y = yy;原创 2012-07-07 18:45:08 · 2269 阅读 · 0 评论 -
c++ this指针
非静态成员的指针一、定义类型说明符 类名::指针名//指向公有数据成员的指针类型说明符 (类名::*指针名)(参数表)//指向公有成员函数的指针二、赋值 //确定指向类的哪个成员指针名 = &类名::数据成员名指针名 = 类名::函数成员名三、引用对象名.类数据名成员指针名(对象名.类函数成员)(参数表)或对象指针名->*原创 2012-07-07 18:32:49 · 411 阅读 · 0 评论 -
c++ 深复制
深复制:如果一个类的数据成员需要使用动态分配的堆资源,并且这个类的对象之间发生了数据成员拥有的堆资源复制过程,这个过程就可以叫深复制。浅复制:对象存在数据成员拥有堆资源但复制过程并未实现数据成员拥有堆资源的复制情况视为浅复制。 #include #include using namespace std; class CPerson { pu原创 2012-07-07 20:56:20 · 1741 阅读 · 0 评论 -
c++ vector数组对象的使用
#include #include using namespace std; double average(const vector &arr) { double sum = 0; for (unsigned i = 0; i { sum += arr[i]; } return sum /原创 2012-07-07 19:19:21 · 1142 阅读 · 0 评论 -
sigaction函数使用实例
sigaction函数(1)sigaction函数原型sigaction函数用来查询和设置信号处理方式,它是用来替换早期的signal函数。sigaction函数原型及说明如下: sigaction(查询和设置信号处理方式) 所需头文件#include原创 2012-09-05 20:51:05 · 1221 阅读 · 0 评论 -
linux创建进程
linux下进程的创建有两种途径,一种是用一个进程来创建另一个进程,则这个创建的进程则作为父进程,被创建的进程将作为子进程。另一种方式就是由系统来创建,比如我们打开一个应用程序,这时的进程则由系统来创建。在进程被创建之后就要为其分配一定的资源。在系统运行时就创建了几个进程,这几个进程被称为系统进程,以后的创建的进程都是直接或间接的由它们来分配资源。一个进程创建之后系统就为其分配进程ID,当这个进程原创 2012-09-06 19:49:51 · 821 阅读 · 0 评论 -
AIX命令参考大全,卷 4,n - r
AIX命令参考大全,卷 4,n - rprof 命令用途显示对象文件概要文件数据。语法prof [ -t | -c | -a | -n ] [ -o | -x ] [ -g ] [ -z ] [ -h ] [ -s ] [ -S ] [ -v ] [ -L PathName ] [ Program ] [ -m Moni转载 2012-11-21 13:11:43 · 910 阅读 · 0 评论 -
字典应用例子
#include #include #include #include #define MAXWORD 50#define DICTSIZ 100char dict[DICTSIZ][MAXWORD+1];//字典中字母数int nwords = 0;int nextin(char* cmd, char* word);int init原创 2012-11-19 20:06:11 · 644 阅读 · 0 评论 -
Linux 简单多线程
#include #include using namespace std;#define NUM 6void *thread_function(void* arg);int main(){int res, index;pthread_t threadID[NUM];void *thread_result;for(inde原创 2012-11-29 13:52:38 · 534 阅读 · 0 评论 -
Linux 线程取消
#include #include using namespace std;void *thread_function(void* arg);int main(void){int res;pthread_t threadID;void *thread_result;res = pthread_create(&threadID, NUL原创 2012-11-29 11:14:41 · 596 阅读 · 0 评论 -
Linux 线程调试
#include #include #include void * child_thread(void* arg){int policy;int max_priority, min_priority;struct sched_param param;pthread_attr_t attr;pthread_attr_init(&attr);pt原创 2012-11-28 11:30:50 · 486 阅读 · 0 评论 -
Linux 线程属性的使用
线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。.名称::pthread_attr_init/pthread_attr_destroy功能:原创 2012-11-27 20:57:20 · 547 阅读 · 0 评论 -
Linux 线程与互斥锁的使用
互斥锁的基本函数和用于信号量的函数非常相似:#include int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t, *mutexattr);int pthread_mutex_lock(pthread_mutex_t *mutex);int pthread_mutex_un原创 2012-11-26 20:41:44 · 464 阅读 · 0 评论 -
Linux 线程的创建与结束
#include #include #include #include using namespace std;char message[] = "init message !";void* thread_function(void *);int main(){ int res; pthread_t tid;原创 2012-11-26 20:00:49 · 453 阅读 · 0 评论 -
孤儿进程组
孤儿进程组定义为:该组中每个成员的父进程要么是该组的一个成员,要么不是该组所属会话的成员。 如果某个进程终止,使得某个进程组成为孤儿进程组的话,系统会向孤儿进程组里面每个处于停止状态进程发送一个SIGHUP信号, 然后发送SIGCONT信号。#include #include #include #include #include #include stati原创 2012-09-14 17:23:33 · 876 阅读 · 0 评论 -
特殊设备文件
stdev是设备号,分为主次设备号:major(buf.st_dev) //主设备号minor(buf.st_dev) //次设备号主设备号表示设备驱动程序,而次设备号表示特定的子设备。比如在同一个磁盘上面 不同的文件系统,设备驱动程序相当,但是次设备号不同。strdev只有字符特殊文件和块特殊文件才有这个值,表示实际设备的设备编号。#include #include原创 2012-09-13 16:29:24 · 807 阅读 · 0 评论 -
进程同步,wait返回值
#include #include #include #include int main(){ int pid, status, exit_status; pid=fork(); if (pid { perror("fork failed\n"); exit(1); }原创 2012-09-28 14:18:47 · 920 阅读 · 0 评论 -
C strtok strtok_r
#include #include int main(){ /* char str[16] = "host:12306"; char *p; p = strtok(str,":"); if(p) printf("%s\n", p); p = strtok(NULL, ",");原创 2012-09-28 12:00:57 · 1827 阅读 · 0 评论 -
libxml -- 解析 XML 文档
参考http://xmlsoft.org/http://www.miidoo.cn/info_detail-204.htmlhttp://www.blogjava.net/wxb_nudt/archive/2007/11/28/161340.htmlhttp://www.ibm.com/developerworks/cn/aix/library/au-libxml2.htmlhttp://翻译 2012-07-04 11:41:09 · 879 阅读 · 0 评论 -
一个简单的linux线程池
线程池:简单地说,线程池 就是预先创建好一批线程,方便、快速地处理收到的业务。比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高。 在linux中,使用的是posix线程库,首先介绍几个常用的函数:1 线程的创建和取消函数pthread_create创建线程pthread_join合并线程转载 2012-07-04 11:36:38 · 461 阅读 · 0 评论 -
Linux C++线程池
这是对pthread线程的一个简单应用1. 实现了线程池的概念,线程可以重复使用。2. 对信号量,互斥锁等进行封装,业务处理函数中只需写和业务相关的代码。3. 移植性好。如果想把这个线程池代码应用到自己的实现中去,只要写自己的业务处理函数和改写工作队列数据的处理方法就可以了。 Sample代码主要包括一个主程序和两个线程实现类原创 2012-07-04 11:35:48 · 860 阅读 · 0 评论 -
纯虚函数与抽象类
#include using namespace std;class Human//接口类ADT{public: Human(){cout virtual void smart()=0; //纯虚函数. virtual void beautiful()=0; //纯虚函数. virtual ~Human(){cout};class father:virtual public Hum原创 2009-10-20 13:00:00 · 497 阅读 · 0 评论 -
多重继承
#include using namespace std;class father{public: father(){cout void smart(){cout virtual ~father(){cout};class mother{public: mother(){cout virtual void beautiful(){cout virtual ~mother(){cout};class原创 2009-10-20 10:58:00 · 387 阅读 · 0 评论 -
走迷宫
// GameWnd.cpp : implementation file////#include "stdafx.h"#include "game.h"#include "GameWnd.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif///////原创 2009-10-20 10:10:00 · 852 阅读 · 0 评论 -
类的函数指针
一::#include using namespace std;class A{public: void Set(int x,int y){a=x;b=y;} void Show(){coutprivate: int a; int b;};void (A::*p)(int,int);/*类的成员函数指针*/int main(){ A a; p=&A::Set; int x=2,y=3; (a.原创 2009-10-21 10:24:00 · 556 阅读 · 0 评论 -
函数指针数组
#include using namespace std;void (*p[5])(int&,int&);//全局的.void square(float&x,float&y){x=x*x;y=y*y;}void cube(float&x,float&y){x=x*x*x;y=y*y*y;}void print(float&x,float&y){coutvoid Swap(float&x,float原创 2009-10-21 09:18:00 · 409 阅读 · 0 评论 -
静态成员函数
#include using namespace std;class A{public: void static show(){cout void get(){cout/* 类中任何成员函数都能访问静态成员 静态成员函数不能直接访问非静态成员 静态成员函数不能被说明为虚函数*/private: static int n; int m;};class B:public A{ };int A::n=0原创 2009-10-20 15:28:00 · 391 阅读 · 0 评论 -
函数指针
#include #include using namespace std;/*int(*func)(int);long(*func1)(int); //声明了一个指针.该指针指向一个函数.long *func1(int); //声明了一个函数.该函数返回一个指针.*/float (*fp)(float&,float&);void (*p)(float&,float&);float triang原创 2009-10-20 16:37:00 · 373 阅读 · 0 评论 -
在派生类中增加函数
#include using namespace std;class father{public: void smart(){cout //virtual void beautiful(){} virtual ~father(){cout};class son:public father{public: void beautiful(){cout ~son(){cout};int main(){原创 2009-10-20 10:46:00 · 615 阅读 · 0 评论 -
多重继承
#include using namespace std;class father{public: void smart(){cout virtual void beautiful(){} virtual ~father(){cout};class son:public father{public: void beautiful(){cout ~son(){cout};int main(){ fa原创 2009-10-20 10:33:00 · 451 阅读 · 0 评论