先来看一个非常普通的收发
服务端
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <assert.h>
int main() {
int listen_fd = socket(AF_INET, SOCK_DGRAM, …… 阅读全文
Tag Archives: Linux
ctime 可重入问题引起的死锁
遇到一个死锁,堆栈类似如下
#0 0x00002b6b7d16cc38 in __lll_mutex_lock_wait () from /lib64/libc.so.6
#1 0x00002b6b7d126a9d in _L_lock_1769 () from /lib64/libc.so.6
#2 0x00002b6b7d126876 in __tz_convert () from /lib64/libc.so.6
搜了一下,发现之前有人已经讨论过这个问题了,在这里,http://lists.gnu.o…… 阅读全文
Linux 分页的一份 pdf
近来在看 linux 的一些分页相关的说明资料,在这里,http://www.kerneltravel.net/ch…,最后有一节,Linux 系统地址映射举例,通过实例的方式介绍了分页的一些实现,记下备忘。
阅读全文
Python 脚本依赖 glob 从命令行获取通配符文件名
在写一个 py 脚本的时候,需要从命令行里面带参数进来,指明需要处理的文件名,这个地方,希望支持 shell 那种 * 的通配符,查了一下,有相关的库,看这里,https://docs.python.org/2/libr…
但是,按照这种搞法,跑起来之后发现不行,glob.glob(sys.argv[2]) 总是只返回一个文件名,查了一下,看到这里,http://s…… 阅读全文
tr1 的 unorderd_map
#include <tr1/unordered_map>
#include <stdio.h>
#include <string>
int main() {
typedef std::tr1::unordered_map<std::string, int> HashMap;
HashMap mapNumber;
mapNumber["one"] = 1;
mapNumber["two"] = 2;
std::tr1::hash<st…… 阅读全文
tr1 的 bind 和 function
首先来看两个文章,function/bind的救赎(上),http://blog.csdn.net/myan/arti…,以boost::function和boost:bind取代虚函数,http://blog.csdn.net/solstice/…,前者讲背景和理论,后者讲实际操作和细节对比,读来酣畅淋漓,醍醐灌顶
这么好的东西,当然要想着怎么在现有的环境条件下用起来,没有 boost,…… 阅读全文
对引用取地址
今天突然想到,如果我们对一个引用取地址,那么会怎么样呢,例如这样
#include <stdio.h>
class CNumber {
public:
int n;
};
void printByPointer(CNumber* pNumber) {
printf("%d\n", pNumber->n);
}
void printByRef(CNumber& oNumber) {
printf("%d\n", oNumb…… 阅读全文
gcc 链接时动态库和静态库的优先选择
老话题了,不过还是记一笔
先看文件
ModuleA.cpp
int add(int a, int b)
{
return a + b;
}
ModuleB.cpp
int minus(int a, int b)
{
return a - b;
}
Main.cpp
#include <stdio.h>
int add(int, int);
int minus(int , int);
int main()
{
printf("%d\n", add(…… 阅读全文
tr1 memory 中的智能指针
tr1/memory 中带了一个 shared_ptr 的智能指针,也有配套的 weak_ptr,但是没有 scoped_ptr,不过起码可以不用等到 c++11 的编译器了
#include <tr1/memory>
#include <stdio.h>
class CTest {
public:
CTest() {
printf("CTest\n");
}
~CTes…… 阅读全文
最简 Makefile
依赖于 Makefile 的自动推导,可以写出非常简化的 Makefile,假设目录下有有 Number.cpp 的单个 cpp 文件,内含 main 函数,那么,Makefile 可以这样写
all: Number
是的,就一行,all 作为默认 target,Number 作为依赖,自动推导出依赖源文件 Number.c*,如果是 cpp,得到编译器 g++,如果是 c,得打编译器 cc,然…… 阅读全文