- 浏览: 265502 次
- 性别:
- 来自: 武汉
最新评论
-
daknife:
谢谢你的这篇文章,让我大概了解了select的一部分底层原理。 ...
Linux-2.6.25 select系统调用源码分析 -
gjlzjb:
非常有用,谢谢哈。另外问下,您是否用过Pheonix Syst ...
Why Map/Reduce? -
zhangyafei_kimi:
canbo 写道请问,我怎么生成安装包,提供给其它用户安装呢? ...
下载最新的Google Chrome源码并编译 -
canbo:
请问,我怎么生成安装包,提供给其它用户安装呢?
下载最新的Google Chrome源码并编译
文章列表
之前学到的TCPIP里面很多点点滴滴都没有做笔记,可以了。
2008-10-04
UDP数据包截断
http://zhangyafei-kimi-163-com.iteye.com/blog/248817
2008.10.04
TCP协议里的时间
http://zhangyafei-kimi-163-com.iteye.com/blog/248816
2008.12.06
处于LISTEN状态的socket:
对于收到的SYN报文会立即回复(不管是否使用了nagle算法)SYN+ACK,然后转移到SYN_RCVD状态,设置75秒的建立定时器。对方的SYN报文可能携带数据,但是在连接进入ES ...
- 2008-12-06 23:32
- 浏览 1298
- 评论(0)
/*
作者:张亚霏
2008-12-03早
*/
/*
UDP主机不可达、端口不可达测试
*/
/*
向一个已知主机的打开端口发一个UDP包,无任何异常
*/
/*
向一个已知主机的未打开端口发一个UDP包
主机返回一个ICMP端口不可达报文
结果就是之后的recvfrom返回-1
GetLastError() WSAECONNRESET
or
errno ECONNRESET
*/
/*
向一个未知主机的某端口发一个UDP包
可能无任何回应
也可能是中间路由器返回一个ICMP主机不可达报文,但是这种情况很少见
结果就是之后的rec ...
- 2008-12-03 10:07
- 浏览 2231
- 评论(0)
/**
张亚霏修改
文件名:epoll_demo.c
编译: gcc epoll_demo.c -pthread
程序源码如下(请自行编辑宏定义SERVER_IP为自己的IP):
*/
/*Linux 2.6 x86_64 only*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/epoll.h>
#include <sys/stat.h& ...
- 2008-12-02 21:12
- 浏览 4424
- 评论(0)
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <iostream>
using namespace boost::asio;
using boost::asio::ip::tcp;
class conn ...
- 2008-11-30 19:39
- 浏览 7473
- 评论(0)
#include <winsock2.h>
#include <mswsock.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "vld.h"
#pragma message("automatic link to ws2_32.lib and mswsock.lib")
#pragma comment(lib, "ws ...
- 2008-11-30 19:10
- 浏览 3037
- 评论(0)
如果主机崩溃,write是否阻塞取决于内核的tcp缓冲区,但read将一直阻塞,直到超时ETIMEOUT,或由于某些中间路由器的原因返回EHOSTUNREACH/ENETUNREACH。select不能检测到该情况。
如果主机崩溃并重起,客户的write到达主机时主机响应RST ...
- 2008-10-24 14:58
- 浏览 4582
- 评论(0)
exit()在结束调用它的进程之前,要进行如下步骤:
1.cleanup();
2.在atexit()注册的函数;
最后调用_exit()函数。。。
‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很
突出。
‘exit()’与‘_exit()’的基本区别在于前一个调用实施与调用库里用户状态结构
(user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序
(译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对
应,后一个函数只为进程实施内核清除工作。
在由‘fo ...
- 2008-10-23 19:38
- 浏览 1919
- 评论(0)
Linux-2.6.25 TCPIP函数调用大致流程
学习目的,随手笔记。函数和文字说明会不断补充更新。
Changelog
2008.10.08 最近找工作忙。暂时缓缓
插口层
系统调用
send
sys_send
sys_sendto
sendto
sys_sendto
sock_sendmsg
sendmsg
sys_sendmsg
sock_sendmsg
write
sys_write
vfs_write
file->f_op->write = ...
- 2008-10-08 21:53
- 浏览 6613
- 评论(0)
l(ist) (文件名:)行号/函数名
显示源码
b(reak) (文件名:)行号/函数名 if <condition>
设置断点
c(ontinue) 停止在断点后,继续非单步执行
n(ext) 下一行
s(tep) 单步
start 开始单步执行
stop 停止调试
p(rint) 变量名 打印变量
r(un) 开始执行
q(uit) 退出
set args ... 设置命令行参数
bt 显示调用堆栈
i(nfo) b(reak)
- 2008-10-07 16:07
- 浏览 1259
- 评论(0)
先决条件
1.安装apport(automatically generate crash reports for debugging)
2.修改/etc/security/limits.conf文件,使允许core dump,或者用ulimit -c unlimited设置core dump文件的大小为unlimited
3.C/C++的编译开关-g(产生调试符号)
######运行编译好的程序testc(我的程序)
kimi@kimi-desktop:~/testc/bin/Debug$ ./testc
######下面一行显示了core dumped表示成功,core文件在/va ...
- 2008-10-07 16:03
- 浏览 6185
- 评论(0)
用 GDB 调试程序
GDB 概述
————
GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。
一般来说, GDB 主要帮忙你完成下面四个方面的功能:
1 、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2 、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
...
- 2008-10-07 16:02
- 浏览 1609
- 评论(0)
原文
http://blog.csdn.net/bekars/archive/2005/12/15/552828.aspx
在《LINUX下动态链接库的创建与应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链 ...
- 2008-10-05 01:47
- 浏览 1555
- 评论(0)
源自:
Linux源码中附带的Document
http://www.ibm.com/developerworks/cn/linux/l-rcu
摘要:
RCU(Read-Copy Update)。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据,这个时机就是所有引用该数据的CPU都退出对共享数据的操作。
读者在访问被RCU保护的共享数据期间不能被阻塞。
写者在访问被RCU保护的共享数据时不需要和读者竞争任何锁,只有在有多于 ...
- 2008-10-05 00:45
- 浏览 1644
- 评论(0)
Windows下面就不多说了:IsBadReadPtr,IsBadStringPtr,IsBadWritePtr。
Linux内核态可以用__access_ok函数来判断内存区域的访问性。
用户态自己写了一个,就是利用了段错误这个信号,然后处理这个信号。用siglongjmp和sigsetjmp在栈里面跳转。
直接Posix族的代码贴出来,应该还有一些小bug,有待继续完善
只把读取权限的写了,别的同理
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include ...
- 2008-10-04 11:30
- 浏览 5752
- 评论(0)
要良好的运用Unix 哲学,你就应该不断追求卓越。你必须相信,软件设计是一门技艺,值得你付出所有的智慧、创造力和激情。否则,你的视线就不会超越那些简单、老套的设计和实现;你就会在应该思考的时候急急忙忙跑去编 ...
- 2008-10-04 11:22
- 浏览 1240
- 评论(0)