linux编程
bical
这个作者很懒,什么都没留下…
展开
-
根据网卡名称编号获取指定网卡的IP地址
getIPByIfName(const char *ifNmae){int s;struct ifreq ifr;static char *none_ip="0.0.0.0";if(NULL==ifName)return none_ip;s=::socket(AF_INET, SOCK_DGRAM, 0);if(-1==s)return none_ip;bz原创 2008-07-04 22:13:00 · 1720 阅读 · 1 评论 -
Pointers to Class Members Are Not Pointers(指向类成员函数的“指针”并非指针)
Item 15. Pointers to Class Members Are Not PointersPointers to Class Members:指向类成员的指针注:本条中只涉及到非静态的数据成员--------------------------------------------------------1、类成员的指针之声明: class C { public: //.原创 2008-09-18 15:33:00 · 773 阅读 · 0 评论 -
常对象与常成员函数的关系
(1) 常对象用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。例:分析下列错误的地方,说明理由;#includeclass Point{ int x, y;public:Point(int a, int b) { x=a; y=b;}Void MovePoint( i转载 2008-09-18 21:13:00 · 2855 阅读 · 2 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{转载 2008-09-16 16:31:00 · 560 阅读 · 0 评论 -
类中的static data member以及static member functions的用法
要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量: int a; string s; 其实就是: auto int a; auto string s; 而sta转载 2008-09-18 15:03:00 · 1218 阅读 · 0 评论 -
linux下比较全的常用的压缩以及解压用法
大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,我将随时修改完善! .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------------------------------- .gz 解压1:gunzip File原创 2008-09-23 10:26:00 · 665 阅读 · 0 评论 -
关于仿函数的应用
在使用仿函数的时候,主要用到以下两种:一种是以基类std::unary_function派生出来的派生类;另一种是以基类std::binary_function派生出来的派生类。而这两种有什么区别呢?它们之间的区别只是第一种接收的参数个数为一个,而第二种接收的参数的个数为两个。仅此而已。好了,我们还是来几个例子看看:第一种的使用templateclass MeetsThreshold:原创 2008-09-22 22:07:00 · 682 阅读 · 0 评论 -
比较有用的linux命令
msn:jinglexy at yahoo dot com dot cn/sbin/blockdev -v --getss /dev/hda1 查看分区区块大小/sbin/blockdev -v --getsize /dev/hda1 查看分区总大小/sbin/chkconfig --list 列出各个run lever下服务状态csplit big.txt 10原创 2008-09-23 15:42:00 · 719 阅读 · 0 评论 -
在linux c++类中的成员函数里创建多线程要注意的地方
如何在linux 下c++中类的成员函数中创建多线程linux系统中线程程序库是POSIX pthread。POSIX pthread它是一个c的库,用C语言进行多线程编程我这里就不多说了,网上的例子很多。但是如何在C++的类中实现多线程编程呢?如果套用C语言中创建多线程的方式,在编译的时候会出现...does not match `void*(*)(void*)..这样的错误。出现这种情况的转载 2008-09-28 11:32:00 · 6727 阅读 · 0 评论 -
fcntl参数详细介绍
fcntl()用来操作文件描述词的一些特性。参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。 有以下几种情况: F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。执行成功则返回新复制的文件描述词。请参考dup2()。F_GETFD取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时原创 2008-10-03 23:15:00 · 1510 阅读 · 0 评论 -
巧妙利用union用来判断大小端的应用
struct TestPoint3d{ union { struct { unsigned int x:1; unsigned int y:1; unsigned int z:30; }; unsigned int loc;原创 2008-09-16 15:12:00 · 476 阅读 · 0 评论 -
编译期检测错误(compile-time assertions)
这里依赖于一个事实:声明下标大小为零或负数的数组是非法的。举个例子#define STATIC_CHECK(expr) { char unnamed[(expr) ? 1 : 0]; } 这种在编译期检查出错误可以增加程序的健壮性 这里设置一个模板的检查方式template struct CompileTime;template struct Compile原创 2008-09-11 14:40:00 · 943 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(下篇)
成员函数指针与高性能的C++委托(下篇) Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔(接中篇)委托(delegate)和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个Subject/Observer设计模转载 2008-09-05 13:50:00 · 581 阅读 · 0 评论 -
C/C++中的日期和时间
详细参考资源:http://zhanjun.net/?q=node/11tm结构与gmtime函数的应用DWORD getTimes(){time_t t=SessionTimeTick::currentTime.sec();struct tm currtm=*(gmtime(&t));DWORD times=0;for(CorpsBattleWarHistoryLis原创 2008-07-10 21:28:00 · 464 阅读 · 0 评论 -
获取连接端的地址以及自己的地址
如果作为服务器端的进程去获取连上它的端地址用getpeername(int sock, struct sockaddr *name, socklen_t *namelen); 而如果想获取服务器进程本地地址采用getsockname(int sock, struct sockaddr *name, sockelen_t *namelen); 要是想改变套接口sock(本质是套原创 2008-08-25 14:45:00 · 837 阅读 · 0 评论 -
epoll技术,及其常用操作
http://blog.chinaunix.net/u/14063/showart_377118.html(epoll技术的介绍) void addEpoll(int kdpfd, __uint32_t events, void *ptr) { mutex.lock; _ev.events = events; //这里的events是由EPOLLIN | EPOLLOUT原创 2008-08-25 14:49:00 · 751 阅读 · 0 评论 -
网络数据的打包(pack)
http://bbs.csai.cn/bbs/view.asp?id=%7B7D79B044-B471-4E15-B837-88196EEFDC15%7D在socket编程的时候,数据的传输一般都经过封装打包才发送到另一端。打包一般都是加入一些额外的信息到raw data中,比如包头一般都加入raw data的前面。包头的大小一般都是比较小的(一般为四字节大小),下面举一个例子,来看看raw d原创 2008-08-25 14:57:00 · 1263 阅读 · 0 评论 -
singleton模式及static成员数据的继承
在软件工程领域,Singleton是一种将对象的实例限制为只有一个的一种模式。当系统的所有处理只需要某个对象的一个实例的时候可以适用这种模式。通常情况下,实例存在的越少(最好是一个)系统的性能越好。针对于Singleton的反模式是使用全局变量。 在wikipedia上Java的标准实现是: public class Singleton { // 通过私有化构造方法,防止在Singlet原创 2008-08-25 14:41:00 · 1474 阅读 · 0 评论 -
创建套接字及设置其属性
客户端服务端共享的: 在进行套接字创建的时候采用int sock = ::socket(PF_INET, SOCK_STREAM, 0); 设置套接口发送及接收缓冲大小: socklen_t window_size = 128*1204 int retcode = ::setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &window_size,原创 2008-08-25 14:46:00 · 2707 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(上篇)
Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔引子标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值。在Delp转载 2008-09-05 13:45:00 · 586 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(中篇)
成员函数指针与高性能的C++委托(中篇) Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔(接上篇)成员函数指针——为什么那么复杂?类的成员函数和标准的C函数有一些不同。与被显式声明的参数相似,类的成员函数有一个隐藏的参数this,它指向一个转载 2008-09-05 13:49:00 · 769 阅读 · 0 评论 -
ioctl参数详解
ioctl函数 本函数影响由fd参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错 第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高原创 2008-10-04 22:21:00 · 8246 阅读 · 0 评论