
Linux
KangRoger
这个作者很懒,什么都没留下…
展开
-
fork调用拷贝缓冲区
#include#includeint main(){ int i; for( i=0;i<2;i++){ fork(); printf("-\n"); } return 0;}输出:6个“-"#include#includeint原创 2014-06-07 20:08:20 · 1160 阅读 · 0 评论 -
g++编译C++11/C++0x遇到的问题
使用g++编译c++11的多线程,编译通过运行出错,其实是编译器的bug。原创 2014-10-08 22:26:50 · 15124 阅读 · 0 评论 -
解决undefined reference to `pthread_atfork'/`pthread_detach'/`pthread_create'/`pthread_join'
../Thread.o: In function `(anonymous namespace)::ThreadNameInitializer::ThreadNameInitializer()':Thread.cpp:(.text+0x5f): undefined reference to `pthread_atfork'../Thread.o: In function `muduo::Th原创 2014-10-12 19:39:21 · 16417 阅读 · 4 评论 -
Webbench源代码分析
Web Bench是一个网站压力测试的工具。其最后更新时间是2004年,已经十年多了。其源代码总共才500多行,全部使用C语言编写,最多可以模拟上万个并发连接。其原理也比较简单,源代码值得一读。原创 2015-01-07 20:57:45 · 13021 阅读 · 7 评论 -
服务器如何给多个客户端分配端口号
服务器端在连接多个客户端时,如何分配端口号?是使用监听的端口号还是随机分配一个?原创 2014-12-05 21:09:43 · 24297 阅读 · 0 评论 -
线程封装
Linux下原始的API使用起来不方便,为了便于使用,尝试封装线程相关API。看了《Linux多线程服务端编程》,陈硕是基于对象来封装的,使用了boost::bind来创建函数对象,把函数对象作为线程运行的函数。我这次尝试面向对象的封装,创建一个线程基类,子类继承这个基类,实现线程运行的主体函数即可。原创 2015-08-23 22:25:26 · 1997 阅读 · 1 评论 -
使用valgrind检查内存使用问题
Valgrind是用于内存检泄漏检测、内存调试以及性能分析的工具集。这里主要介绍其用与内存相关的工具Memcheck,它可以发现大部分的内存问题,例如内存泄漏,使用未初始化内存、内存越界等问题。原创 2015-09-04 22:10:20 · 4326 阅读 · 0 评论 -
gdb调试多线程
gdb使用与调试多线程原创 2015-08-25 22:54:52 · 13519 阅读 · 1 评论 -
无锁编程:lock-free原理
介绍了无锁编程和ABA问题原创 2015-08-22 23:55:06 · 3687 阅读 · 0 评论 -
epoll介绍和使用
epoll是linux在2.6内核新增的系统调用,为了更高效地实现多路IO复用。本文简要介绍了其使用方法,并用epoll实现了一个Echo服务器。原创 2015-07-21 21:44:52 · 1853 阅读 · 0 评论 -
TinyHttp源码解读
解读tinyhttpd源代码,理解web服务器的基本原理、原创 2015-01-17 20:51:17 · 6696 阅读 · 6 评论 -
缓冲I/O与非缓冲I/O(fopen与open系列函数区别)
在文件系统中,原创 2014-07-21 23:56:07 · 2884 阅读 · 0 评论 -
TCP连接的建立于释放
TCP的连接是由三次握手来完成的。原创 2014-07-23 22:32:56 · 1306 阅读 · 0 评论 -
Linux的内存结构以及动态申请的几个函数
malloccallocreallocfreealloca分配栈上的空间原创 2014-07-24 23:05:19 · 4677 阅读 · 0 评论 -
捕捉SIGCHLD,处理僵死进程
在Linux/Unix系统中,当进程结束时,内核会释放进程原创 2014-07-08 20:39:50 · 3502 阅读 · 0 评论 -
FTP协议
FTP全称是File Transfer Protocol,是工作在应用层的协议。它的目的是在不同的主机之间传送文件。这两台主机可能是不同的操作系统、使用不同的文件结构、使用不同的字符集。 FTP是使用两个连接来传送文件:1、 控制连接用于传送命令通常控制连接以客户端服务器方式建立。服务器被动打开(FTP端口21),等待客户端连接。控制连接传送客户端发送的命令,并传回服务器的应答。原创 2014-07-28 20:57:18 · 1106 阅读 · 0 评论 -
Linux下Scoket聊天程序
client原创 2014-07-29 19:41:00 · 1931 阅读 · 0 评论 -
普通管道和命名管道
管道分为普通管道和命名管道;两者都是半双工的。普通管道只能用于父子进程或兄弟进程间的通信,因为普通管道通过fork调用来拷贝文件描述符的,在文件系统中,普通管道并不对应物理文件。命名管道在文件系统中有物理文件存在,因此可以用于非亲属的进程间通信。1普通管道#includeint pipe(int fd[2])用于创建管道,创建后fd[0]和fd[1]在同一个进程用,原创 2014-08-04 17:16:25 · 5534 阅读 · 2 评论 -
线程同步
在Linux系统中,如果有多个线程并发运行,原创 2014-07-09 21:55:48 · 2333 阅读 · 0 评论 -
程序员应该了解的数字
程序访问不同设备所需时间翻译 2017-05-23 23:25:42 · 8229 阅读 · 10 评论