- 博客(20)
- 资源 (15)
- 收藏
- 关注
转载 GDB手册
GDB手册2:进入和离开GDB2010-01-10 Linux查看评论<br />第一章:一个GDB会话例子<br />第二章:进入和离开GDB<br />这章讨论了如何开始和离开GDB。<br />提要:<br />1. 输入’gdb’开始GDB<br />2. 输入 quit or Ctrl-d来退出<br />2.1 调用GDB<br /> 运行gdb程序调用GDB。一旦开始执行,GDB会一直从终端读入命令,直到你告诉它结束为止。<br /> 在需要制定一些调试环境的时候,你也可以在开始的时候就用
2010-06-12 10:14:00 1650
原创 Linux设置环境变量
<br />Linux设置环境变量小结<br />1、总结背景<br />在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲解环境变量定制的问题。<br />2、变量简介<br />Linux是一个多用户的操作系统。每个用户登录系统后,都会
2010-06-10 16:18:00 593
原创 SIGPIPE信号问题
<br />socket编程问题<br />SIGPIPE信号问题=========================<br />当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。<br /> 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGP
2010-06-10 16:17:00 666
原创 线程错误
<br />2.3 线程段错误 <br />在多线程中,若一个线程退出问题:<br />为什么A程序创建了10个线程, 但是ps时却会出现11个A进程了. 因为linuxthreads自动创建了一个管理线程. <br />当程序开始运行时, 并没有管理线程存在(因为尽管程序已经链接了pthread库, 但是未必会使用多线程). <br />程序第一次调用pthread_create时, linuxthreads发现管理线程不存在, 于是创建这个管理线程. 这个管理线程是进程中的第一个线程(主线程)的儿子.<
2010-06-07 17:19:00 1283
原创 socket编程问题-SIGPIPE信号处理
<br />socket编程问题<br />SIGPIPE信号问题=========================<br />当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。<br /> 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGP
2010-06-07 17:19:00 2139
原创 线程的退出
<br /><br />2.线程的退出<br />2.1 线程的正常退出处理:<br /> 1.可预知的错误发生时,应对处理:使整个程序stop的方法<br /> 设置全局的开关 ,在主进程和线程中使用【线程中使用extern 进行引用】,当主进程或线程中的开关发生变化,要求退出时,所有线程退出,主进程调用函数pthread_join()阻塞式的等待所有线程的退出。<br /> 2.可预知的错误发生时,应对处理:使整个程序stop的方法<br /> 对于接受线程:可以内部发送控制信息
2010-06-07 17:18:00 1448
原创 线程的互斥锁
<br />1.线程的互斥锁<br />1.1. 初始化:<br />在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化:<br />对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init.<br />对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始化, 并且在释放内存(free)前需要调用pthread_mutex_
2010-06-07 17:17:00 3512
转载 指针的理解
<br />指针的理解<br />一个变量的地址称为该变量的“指针”。<br />地址2000是变量i的指针。<br />char *b 是指针,它代表一个地址;&b就是指针的指针,是二级指针。<br />指针也就是一个无符号的整数。<br />作为一级指针char *b的值改变了,但二级指针&b的值没变。<br />指针理解<br />map<string, string > & RunScript(char *name, int num, char **list)<br />{<br />...<br
2010-06-07 11:14:00 634
转载 Linux系统的默认编码设置
Linux系统的默认编码设置修改/etc/sysconfig/language文件,将RC_LANG, RC_LC_ALL设置为zh_CN.GB2312, 同时将ROOT_USES_LANG设置为 "yes" 一。Linux系统的默认编码设置。 /etc/sysconfig/i18n Controls the system font settings. The language variables are used in /etc/profile.d/lang.sh. An example
2010-06-07 10:59:00 879
转载 网络接口层-路由的处理
PC1(网关指向R1 E0口)给发一个PING 包的时候 就要封装 第1个就是代理ARP的 解析出E0口的 MAC地址 IP地址都是不变得 包的方向是上面的从左到右的方向(黑箭头)PC2(网关指向R2 E0口)给回一个PING包的时候 是下面的方向 (红箭头)ip数据包经由路由转发的时候源ip,目的ip是否改变?最近面试网络方面的经常问到这个问题,答案是不能改变的,除非做了nat转换才能改变,不过mac地址是变化的,因为发送端开始不知道目的主机的mac地址,所以每经过一个路由器mac地址是变化的。目
2010-06-07 10:32:00 1007
转载 tcp 数据封装
<br />数据封装<br /><br /> 当主机跨越网络向其他设备传输数据时,就要进行数据封装,就是在OSI模型的每一层加上协议信息。每一层只与接受设备上相应的对等层进行通信。<br /> 为了实现通信并交换信息,每一层都使用协议数据单元(Protocol Data Units,PDU)。在模型中的每一层,这些含有控制信息的PDU被附加到数据上。他们通常被附加到数据字段的报头中。但它们也可以附加在数据字段的报尾中。<br /> 在OSI模型的每一层,通过封装使每个PDU被附加到数据上,而且每个PD
2010-06-05 11:44:00 4465 1
转载 关于pthread_mutex_t的初始化
关于pthread_mutex_t的初始化 [心得] class MyLock { private: pthread_mutex_t m_lock; public: MyLock() { // m_lock = PTHREAD_MUTEX_INITIALIZER; //使用这种方法初始化时GCC编译无法通过 pthread_mutex_init(&m_lock,NULL); } ~MyLock() { } void Lock() { pthread_mutex_lock(&m_lock); } void u
2010-06-05 10:51:00 13094
原创 gdb 调试
<br />GDB调试启动.无论gdb何时中断了你的程序(因为一个断点或者是一个信号),gdb会自动选择信号或断点发生的线程作为当前线程;<br />TAG: Linux 调试 GDB <br /><br />一、GDB的静态调试启动方法:<br />1、当需要在命令行通过gdb来启动可执行程序的时候,可使用一下命令:<br /> gdb <可执行程序名><br /> 这个时候gdb会加载可执行程序的符号表和堆栈,并为启动程序作好准备;<br /> 接下来,需要设置可执行程序的命令行参数:
2010-06-05 10:50:00 1543
转载 GDB调试启动
<br />GDB调试启动.无论gdb何时中断了你的程序(因为一个断点或者是一个信号),gdb会自动选择信号或断点发生的线程作为当前线程;<br />TAG: Linux 调试 GDB <br /><br />一、GDB的静态调试启动方法:<br />1、当需要在命令行通过gdb来启动可执行程序的时候,可使用一下命令:<br /> gdb <可执行程序名><br /> 这个时候gdb会加载可执行程序的符号表和堆栈,并为启动程序作好准备;<br /> 接下来,需要设置可执行程序的命令行参数:
2010-06-04 13:50:00 5315
转载 改写你的recv和send函数
改写你的recv和send函数(TCP传输数据细节 二) TCP是基于字节流的,你向send或者recv提交一个buffer,它不一定帮你发送或者接收完这个buffer的,所以你应该自己改写一下这两个函数,以便符合应用的需要,改写后姑且命名为TCPsend,TCPrecv下面我改写后的这两个函数的实现:////////////////////////////////////////////////////////////////////////////////////////int TCPsend(SOCK
2010-06-03 23:09:00 1523
原创 tcp 数据的传输
<br />TCP完成开放系统互连(OSI)模型中传输层,即第四层的功能。它的主要责任是确保端至端之间的可靠连接。IP位于下一层,在OSI的网络层,即第三层,把每个包的发送者和接收者地址告诉一路上各个路由器。路由器和第三层交换器可以读出IP和其他的第三层协议。这些信息与路由表以及其他网络智能结合在一起,能通过TCP/IP在整个房间或围绕地球进行传递。<br /><br /> 路由过程始于对发送端站而言是唯一的一个IP地址,端站可以被分配永久的IP地址,或者按需要从动态主机配置协议(DHCP)服务器或其
2010-06-03 23:05:00 518
转载 #ifdef __cplusplus 倒底是什么意思?
#ifdef __cplusplus 倒底是什么意思?1推荐时常在cpp的代码之中看到这样的代码:#ifdef __cplusplus extern "C" { #endif//一段代码#ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern
2010-06-03 22:37:00 530
转载 转载 :struct sockaddr_in等Socket编程相关数据类型定义
struct sockaddr_in等Socket编程相关数据类型定义 <br />计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。<br /><br />我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的: <br /> struct
2010-06-02 11:48:00 602
原创 TCP/IP协议栈与数据包封装
1. TCP/IP协议栈与数据包封装TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示(该图出自[TCPIP])。图 36.1. TCP/IP协议栈两台计算机通过TCP/IP协议通讯的过程如下所示(该图出自[TCPIP])。图 36.2. TCP/IP通讯过程传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及
2010-06-01 22:45:00 769
原创 转载 :TCP/IP 应用层与应用程序
<br />TCP/IP 应用层与应用程序 <br />TCP/IP 起源于二十世纪 60 年代末美国政府资助的一个分组交换网络研究项目,它是一个真正的开放协议,很多不同厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 TCP/IP 协议组件允许它们互相进行通信。现在 TCP/IP 已经从一个只供一些科学家使用的小实验网成长为一个由成千上万的计算机和用户构成的全球化网络,TCP/IP 也已成为全球因特网(Internet)的基础,越来越多的 TCP/IP 互联网应用和企业商业应用正在改变着世界。<b
2010-06-01 21:20:00 1163
深入编程内幕.pdf
2015-03-28
C++编程指南.pdf
2015-03-28
Berkeley DB 资料
2010-09-21
linux c函数速查手册
2009-10-13
lcd ampire128x64 的使用 proteus
2009-05-17
autocad做的小户型平面图
2009-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人