11 2010 档案

摘要:本文结合大量实例阐述如何编写一个shell脚本。 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在... 阅读全文
posted @ 2010-11-26 19:07 Springside4 阅读(234) 评论(0) 推荐(0) 编辑
摘要:本篇文章主要教你如何使用Vim分屏功能分屏启动Vim使用大写的o参数来上下分屏。vim -on file1 file2 ...使用小写的O参数来左右分屏。vim -On file1 file2 ...注释:n是数字,表示分成几个屏。关闭分屏关闭当前窗口。Ctrl+W c关闭当前窗口,如果只剩最后一个了,则退出Vim。Ctrl+W q分屏上下分割当前打开的文件。Ctrl+W s上下分割,并打开一个新的文件。:sp filename左右分割当前打开的文件。Ctrl+W v左右分割,并打开一个新的文件。:vsp filename移动光标Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先 阅读全文
posted @ 2010-11-25 18:31 Springside4 阅读(114) 评论(0) 推荐(0) 编辑
摘要:Linux操作系统下的多线程编程详细解析----条件变量1.初始化条件变量pthread_cond_init#include <pthread.h>int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否则条件变量的属性将由cattr中的属性值来决定。调用 pthread_cond_init函数时,参数cattr为空指针等价于cattr中的属性为缺省属性,只是前者 阅读全文
posted @ 2010-11-24 11:30 Springside4 阅读(158) 评论(0) 推荐(0) 编辑
摘要:C++纯虚函数 virtual =0参考:http://hi.baidu.com/cunlin/blog/item/d82b160102e0e4037aec2ccb.html(百度空间)=========================================================================C++中的纯虚函数在C++中的一种函数申明被称之为:纯虚函数(pure virtual function).它的申明格式如下:class CShape{public: virtual void Show()=0;};注意红色部分,在普通的虚函数后面加上"=0 阅读全文
posted @ 2010-11-24 09:51 Springside4 阅读(110) 评论(0) 推荐(0) 编辑
摘要:在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为:template<classT>......在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候就可以使用下面的方式了:template<typenameT>......在模 阅读全文
posted @ 2010-11-23 20:57 Springside4 阅读(247) 评论(0) 推荐(0) 编辑
摘要:C++中,有三种类型的循环语句:for、while、do...while在一般应用中作循环时,我们可能用for和while要多一些,do...while相对不受重视。但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性1.do...while(0)消除goto语句通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:version1boolExecute(){//分配资源int*p=newint;boolbOk(true);//执行并进行错误 阅读全文
posted @ 2010-11-23 17:15 Springside4 阅读(137) 评论(0) 推荐(0) 编辑
摘要:一、 强制转型1) C 风格(C-style)强制转型: (T) exdivssion // cast exdivssion to be of type T 2)函数风格(Function-style)强制转型使用这样的语法: T(exdivssion) // cast exdivssion to be of type T上面两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题,我们把这两种形式称为旧风格(old-style)的强制转型。二、 C++类型转换使用标准C++的类型转换符,主要有四种类型:static_cast、dynamic_cast、reinterdivt_cas.. 阅读全文
posted @ 2010-11-19 13:24 Springside4 阅读(122) 评论(0) 推荐(0) 编辑
摘要:一般的,vim打开中文文件时会出现乱码,原因比较复杂,不罗嗦了。直接讲解决办法 set fileencoding=gb18030 set fileencodings=utf-8,gb18030,utf-16,big5想看这样设置的原因吗?请继续。下文在网络中广泛流传vim里面的编码主要跟三个参数有关:enc(encoding), fenc(fileencoding)和fencs(fileencodings)fenc是当前文件的编码,也就是说,一个在vim里面已经正确显示了的文件(前提是你的系统环境跟你的enc设置匹配),你可以通过改变 fenc后再w来将此文件存成不同的编码。比如说,我:set 阅读全文
posted @ 2010-11-17 20:03 Springside4 阅读(129) 评论(0) 推荐(0) 编辑
摘要:在Linux中,要发送一个信号相当容易。程序员需要知道两个信息:要发送哪个信号,将这个信号发送给哪个进程。可以用 man 7 signal 找到一个可以利用的信号的列表。用户可以只将信号发送给用户自己的进程,也可以以root身份运行从而将信号发送给任意一进程。Source:#include<stdio.h>#include<signal.h>#include<unistd.h>#include<stdlib.h>void when_alarm();void when_sigint();void when_sigchld(int);void whe 阅读全文
posted @ 2010-11-12 10:38 Springside4 阅读(208) 评论(0) 推荐(0) 编辑
摘要:一、一般用法我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.用法:#include<cstdio>#include<climits>using namespace std;#define STR(s) #s#define CONS(a,b) int(a##e##b)int main(){ printf(STR(vck)); // 输出字符串"vck" printf("%d", CONS(2,3)); // 2e3 输出:2000 return 0;}二、当宏参数是另一个宏的时候需要注意的是凡宏定义里有用'# 阅读全文
posted @ 2010-11-12 09:43 Springside4 阅读(101) 评论(0) 推荐(0) 编辑
摘要:指针数组与指向指针的指针http://wlkc.gdqy.edu.cn/jpkc/portal/blob?key=173314指针数组和数组指针的区别http://allew.blog.163.com/blog/static/3374389720094148449239/指针数组[组图]http://school.cnd8.com/c/jiaocheng/9212.htm函数指针和指针函数http://lionwq.spaces.eepw.com.cn/articles/article/item/18258========================================sour 阅读全文
posted @ 2010-11-11 18:31 Springside4 阅读(111) 评论(0) 推荐(0) 编辑
摘要:TCP连接断开的时候调用close socket函数,已经讨论过有优雅的断开和强制断开,那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下:struct linger { int l_onoff; int l_linger; }; 有三种组合方式:第一种 l_onoff = 0; l_linger忽略这种方式下,就是在closesocket的时候立刻返回,底层会将未发送完的数据发送完成后再释放资源,也就是优雅的退出.第二种 l_onoff非零 l_linger = 0;这种方式下,在调用close s... 阅读全文
posted @ 2010-11-11 17:16 Springside4 阅读(116) 评论(0) 推荐(0) 编辑
摘要:服务器关了正在连接的客户端socket_fd,客户端做出的反应过程当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN如: signal(SIGPIPE,SIG_IGN);这时SIGPIPE交给了系统处理。 服务器采用了fork的话,要收集垃圾进程,防止... 阅读全文
posted @ 2010-11-11 17:08 Springside4 阅读(152) 评论(0) 推荐(0) 编辑
摘要:VIM REFERENCE MANUAL by Bram Moolenaarhttp://vimcdoc.sourceforge.net/doc/quickref.html#Q_viVIM 用户手册 - by Bram Moolenaarhttp://vimcdoc.sourceforge.net/doc/usr_03.html#03.8 阅读全文
posted @ 2010-11-11 15:27 Springside4 阅读(78) 评论(0) 推荐(0) 编辑
摘要:Source:#include <iostream> #include <list> #include <numeric> #include <algorithm> using namespace std; typedef list<int> LISTINT; //创建一个list容器的实例LISTINTtypedef list<int> LISTCHAR; //创建一个list容器的实例LISTCHARint main(void) { LISTINT listOne; //用LISTINT创建一个名为listOne的li 阅读全文
posted @ 2010-11-09 15:08 Springside4 阅读(117) 评论(0) 推荐(0) 编辑