
疑难点
文章平均质量分 51
trist725
Roma is not built in one day.
展开
-
关于链接失败 对xxxx ‘__gxx_personality_v0’未定义的引用
用惯了gcc编译程序,结果今天重构一个c程序为c++,编译,链接报了个错:/tmp/ccrDo3QI.o:(.eh_frame+0x2af):对‘__gxx_personality_v0’未定义的引用代码里面真看不出来啊,好纠结。。最后发现,是因为C++要用g++而不是gcc编译啊,尼玛。。。原创 2015-01-07 17:12:56 · 1392 阅读 · 0 评论 -
epoll的一些关键点和总结(一)
1.两种工作模式以及ET模式下的数据收发异常:在epoll中有两种模式:level-trigger模式,简称LT模式,和edge-trigger模式,简称ET模式。其中,LT是默认的工作模式。LT(level triggered)是缺省的工作方式,并且同时支持block和no-block socket。在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd原创 2015-01-09 14:44:58 · 986 阅读 · 1 评论 -
关于epoll边缘触发模式(ET)下的EPOLLOUT触发
ET模式下,EPOLLOUT触发条件有:1.缓冲区满-->缓冲区非满;2.同时监听EPOLLOUT和EPOLLIN事件 时,当有IN 事件发生,都会顺带一个OUT事件;3.一个客户端connect过来,accept成功后会触发一次OUT事件。其中2最令人费解,内核代码这块有注释,说是一般有IN 时候都能OUT,就顺带一个,多给了个事件。。以上,当只监听IN事件,原创 2015-01-13 22:47:24 · 5147 阅读 · 2 评论 -
epoll的一些关键点和总结(二)
epoll异步精髓(ET模式):2个epoll初始化片段:epoll_event ev;ev.events = EPOLLIN | EPOLLET;ev.data.fd = fd;int ret = epoll_ctl(_epfd, EPOLL_CTL_ADD, fd, &ev);_pEvents = new epoll_event[EPOLL_SIZE - 1];i原创 2015-01-12 17:32:52 · 946 阅读 · 0 评论 -
linux中绑定80端口失败
Ubuntu 14.10 64bitbind 80端口失败,提示:Bind error!: Permission denied起初以为是80已经被占用,lsof -i :80 , 发现没有,结果发现在基于Unix的系统上,绑定小于1024的端口需要root权限。解决方法很简单,以root权限运行程序吧。。当然还有其它办法,如反向代理,端口转发等。。。。原创 2015-01-05 11:40:44 · 3778 阅读 · 3 评论 -
socket TCP编程中connect的一些坑
1.服务端listen成功后,系统就自动接收客户端请求了man listen:其中有一段The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it specifies the queue length for completely establishe原创 2015-01-29 17:56:06 · 10590 阅读 · 1 评论 -
从C++单例模式到线程安全
先看一个最简单的教科书式单例模式:class CSingleton{public:CSingleton* getInstance(){if(NULL == ps){ps = new CSingleton;}return ps;}private:CSingleton();static CSingleton* ps;}原创 2016-07-14 23:00:06 · 456 阅读 · 0 评论