c++
icyday
在路上,log。。。。
展开
-
【转】Libevent使用摘要
1 头文件与编译标志 http://hi.baidu.com/baowup/item/732c590d956eef364ac4a300 头文件 event.h 。 编译标志 -levent 。(gcc -levent ... ) 2 建立event句柄 struct event ev; event_init(); event_set(&ev,s,EV_RE转载 2012-10-09 17:25:43 · 435 阅读 · 0 评论 -
libevent学习笔记
1、libevent处理3种事件,超时,io与信号 超时也即定时器是通过min-heap来实现的 其他io与信号都是通过系统的I/O demultiplexer来实现的,一般就是epoll(linux) 2、为了提高性能,libevent对时间进行了缓存,也即在清空缓存之前的所有add的超时事件都是以这个缓存时间为依据的。 如果这次的循环时间之心过长,这会导致在这段时间内add的事件会提前原创 2013-12-30 17:45:26 · 861 阅读 · 0 评论 -
epoll 的et与lt,辩证的看待问题,各种方式有利有弊
前几天回答一个问题,是关于我们项目中使用的epoll模式的,因为记不大清了,感觉应该使用的就是epoll的高速模式,也就是ET(edge-trigger)模式。这两天闲暇的时候,打开代码又看了一下,在epoll事件注册时并未标记ET模式,看来实际使用的是epoll默认的LT(level-trigger )模式,为什么呢?使用LT意味着 只要 fd 处于 readable/writable 状态转载 2013-12-30 17:08:51 · 945 阅读 · 0 评论 -
stdarg.h中三个宏va_start ,va_arg和va_end
http://blog.sina.com.cn/s/blog_4e1ac22c0100b93s.html #include #include const int N=5; using namespace std; void Stdarg(int a1,...) { va_list argp; int i; int转载 2014-02-20 19:51:06 · 540 阅读 · 0 评论 -
10.会改变自己名字的进程
10.会改变自己名字的进程 问:你能写出一个在运行时改变自己进程名的程序吗? 答:参见下面这段代码: #include int main(int argc, char *argv[]) { int i = 0; char buff[100]; memset(buff,0,sizeof(buff)); strncpy(buff, argv[0],转载 2014-02-13 11:05:05 · 863 阅读 · 0 评论 -
atexit()使用
6.使用_exit退出 问:在下面的代码中,atexit()并没有被调用,为什么? #include void func(void) { printf("\n Cleanup function called \n"); return; } int main(void) { int i = 0; atexit(func); for(;i转载 2014-02-13 11:08:11 · 863 阅读 · 0 评论 -
inside the c++ object model
1、不同类型指针的区别 本质没有不同,不同类型的指针只是影响编译器对所指向内存的大小与内容解析方式而已原创 2014-02-13 15:33:02 · 727 阅读 · 0 评论 -
c++虚函数表
http://blog.csdn.net/haoel/article/details/1948051#comments转载 2014-05-16 16:00:33 · 547 阅读 · 0 评论 -
Android root原理分析
综合多篇文章,记录备忘 步骤: 1、通过漏洞获得root权限 2、获得root权限后,复制su文件到,system/xbin目录下(su文件时特殊定制的) 3、安装superuser.apk到手机(和su协作完成用户的权限确认) --有的手机在每次重启是都会检查su问件,看它是否有变化(文件本身和权限)如果有,则删除或替换掉 --解决方案是刷个eng的boot.img 获得ro...原创 2014-10-21 22:34:30 · 914 阅读 · 0 评论 -
c宏定义的一些写法符号
#define contat(a) 'tttttttttt'a -》contat("1234") ==tttttttt1234 ## abc 表示abc没有时忽略前面的逗号, 例如 #define f(a,b,args...) t(a,b,##args)原创 2013-08-27 16:32:54 · 987 阅读 · 0 评论 -
gcc的原子操作
【转】http://www.cnblogs.com/FrankTan/archive/2010/12/11/1903377.html GCC 提供的原子操作 gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。 其声明如下: type __sync_fetch_and_add (type *ptr, type value转载 2013-06-24 15:40:53 · 794 阅读 · 0 评论 -
srand函数
srand函数是随机数发生器的初始化函数。 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00转载 2012-10-22 16:07:51 · 566 阅读 · 0 评论 -
SecureCRT超时问题
由于客户端、服务器端存在路由器、防火墙,为了本身的安全性,在超过特定时间后会把空闲连接断开。 解决办法: 1.可以修改服务器端参数,使服务器每隔一段时间向客户端发送一个消息,用于保持连接。 /etc/ssh/sshd_config 文件中的ClinetAliveInterval 300(默认为0) 2.最好的办法是修改客户端设置,使客户端每隔一段时间向服务器发送一个消息,以转载 2012-10-24 15:57:31 · 1105 阅读 · 0 评论 -
c语言结构体struct
今天看代码,发现一个定义如下: struct A_t { int a; int b; }A; 然后下面就直接用A了,如A.a=12;当时我想不是A是A_t的别名吗?怎么直接可以操作类型了,啊啊啊啊啊啊! 查了一下,自己白学了这么多年的c呀,连个结构体都没搞懂,斯巴达了!! 我原先都是这样用 : typedef struct A_t { int a; int b; }A,*pA;原创 2012-11-03 20:58:39 · 496 阅读 · 0 评论 -
gcc与g++区别与联系
http://possini.spaces.live.com/blog/cns!5E8881E869196757!1025.entry 我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用gcc,链 接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟转载 2012-11-07 19:17:49 · 391 阅读 · 0 评论 -
SIGHUP信号相关
摘自:http://bbs.chinaunix.net/viewthread.php?tid=766356 unix中进程组织结构为 session 包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程。 一个session可能会有一个session首进程,而一个session首进程可能会有一个控制终端。 一个进程组可能会有一个进程组首进程。进程组首进程的进程ID与该进程组I转载 2012-11-07 19:08:29 · 596 阅读 · 0 评论 -
unix中的c函数
1.realpath:char *realpath(src,dst)将src转化为绝对路径到dst,返回dst的指针 2、getopt:获得命令行的参数,getopt(argc, argv, "ab:c:de::") #include int main(int argc,char **argv) { int ch; opterr = 0; while((ch = getop转载 2012-11-07 15:56:25 · 1205 阅读 · 0 评论 -
source insight快捷键及使用技巧
退出程序 : Alt+F4 重画屏幕 : Ctrl+Alt+Space 完成语法 : Ctrl+E 复制一行 : Ctrl+K 恰好复制该位置右边的该行转载 2013-01-24 10:31:59 · 382 阅读 · 0 评论 -
error C2275
将C代码在VC++中编译,经常会出现error C2275错误,结果是变量的定义位置不对,应该在函数块的最前面。这是一个编程习惯的问题。 在移植c++代码到c的时候,经常会出现一个奇怪的错误:“error C2275: “xxxxx”: 将此类型用作表达式非法” 这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部,而c++没有这样的要求造成的。 解决的办法就转载 2013-01-10 10:57:59 · 525 阅读 · 0 评论 -
exit与return的区别
http://coolshell.cn/articles/12103.html 现在再回到 return 和 exit,return会释放局部变量,并弹栈,回到上级函数执行。exit直接退掉。如果你用c++ 你就知道,return会调用局部对象的析构函数,exit不会。(注:exit不是系统调用,是glibc对系统调用 _exit()或_exitgroup()的封装)转载 2015-01-19 10:49:37 · 727 阅读 · 0 评论