linux
文章平均质量分 65
jiangzhuzhu
这个作者很懒,什么都没留下…
展开
-
gdb调试命令详解
在linux的c编程中大家经常用gdb调试程序,以下是一些常用的指令 1.break FUNCTION 在某个函数上设置断点。函数重载时,有可能同时在几个重载的函数上设置了断点 break +OFFSET break -OFFSET 在当前程序运行到的前几行或后几行设置断点 break LINENUM 在行号为LINENUM的行上设置断点 break FIL原创 2010-01-28 00:26:00 · 527 阅读 · 0 评论 -
select和所线程设计并发服务器的问题(转自China Linux Fans )
<br />各位好,我使用select和多线程设计一个并发服务器,实现对客户端请求的并发处理,这样设想:每当select到一个socket有数据可以读写的时候就创建一个线程进行数据处理,代码如下:<br /> <br />/ *------------------------------------------------------------------------------------------------------- * server.c *转载 2011-05-30 22:57:00 · 917 阅读 · 0 评论 -
Hashtable查找开源代码
Hashtable.h/* Copyright (C) 2002 Christopher Clark *//* * Copyright (c) 2002, Christopher Clark * All rights reserved. * * Redistribution and use in source and binary forms, with or with原创 2011-06-15 23:05:00 · 700 阅读 · 0 评论 -
linux 内核链表
list.h/* Author: linux kernel */#ifndef LIST_H#define LIST_H/* * Simple doubly linked list implementation. * * Some of the internal functions ("__xxx") are useful when * manipulati原创 2011-06-15 23:10:00 · 242 阅读 · 0 评论 -
TCP关闭连接四次握手图
原创 2011-06-16 13:07:00 · 214 阅读 · 0 评论 -
零拷贝实例(zerocopy)转
代码实例是,客户端发送给服务端所需要的文件路径名,然后服务端将文件内容零拷贝发送给客户端,然后,客户端将内容写入到本地文件。 客户端代码:zerocopyclient.cpp #include "network.h" using namespace std; int main(int argc,char *argv[]) { sockaddr_in servadd原创 2011-06-16 15:32:00 · 275 阅读 · 0 评论 -
关于SO_LINGER的使用说明
SO_LINGER 此选项指定函数close对面向连接的协议如何操作(如TCP)。缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。 SO_LINGER选项用来改变此缺省设置。使用如下结构: struct linger { int l_onoff; /* 0 = off, nozero = on */ int l_linger; /* ling原创 2011-06-17 14:54:00 · 456 阅读 · 0 评论 -
linux等一秒的实现方法
while(time(NULL) == t);原创 2011-06-18 17:08:00 · 264 阅读 · 0 评论 -
多线程服务器的适用场合(转)
这篇文章原本是前一篇博客《多线程服务器的常用编程模型》(以下简称《常用模型》)计划中的一节,今天终于写完了。 “服务器开发”包罗万象,本文所指的“服务器开发”的含义请见《常用模型》一文,一句话形容是:跑在多核机器上的 Linux 用户态的没有用户界面的长期运行的网络应用程序。“长期运行”的意思不是指程序 7x24 不重启,而是程序不会因为无事可做而退出,它会等着下一个请求的到来。例如 wget原创 2011-06-18 14:07:00 · 638 阅读 · 0 评论 -
Linux网络编程一步一步学-加密通讯协议SSL研究(转)
服务器端源代码如下: #include #include #include #include string.h>#include #include in.h>#include #include #include #include #include #include #define MAXBUF 1024/************关于本原创 2011-06-19 02:44:00 · 914 阅读 · 1 评论 -
解决gdb调试不进入方法的问题
<br />今天在调试libevent的sample代码的时候,遇到不能进入libevent的函数,通过在命令行输入debuginfo-install libevent-1.4.13-1.fc13.i686解决,全程需要联互联网。原创 2011-05-20 22:04:00 · 445 阅读 · 0 评论 -
关于SO_REUSEADDR的使用说明
<br /> 1. 可以对一个端口进行多次绑定,一般这个是不支持使用的; <br /> 2. 对于监听套接字,比较特殊。如果你定义了SO_REUSEADDR,并且让两个套接字在同一个端口上进行接听,那么对于由谁来ACCEPT,就会出现歧义。如果你定义个SO_REUSEADDR,只定义一个套接字在一个端口上进行监听,如果服务器出现意外而导致没有将这个端口释放,那么服务器重新启动后,你还可以用这个端口,因为你已经规定可以重用了,如果你没定义的话,你就会得到提示,ADDR已在使用中。原创 2011-01-19 10:58:00 · 231 阅读 · 0 评论 -
shell解析IP地址
<br />ifconfig | grep '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}' | grep -v '127'| cut -d: -f2 | awk '{print $1}'原创 2011-01-12 09:27:00 · 382 阅读 · 0 评论 -
关于vi命令
yy 复制一行 p粘贴一行 dd删除一行原创 2010-03-04 07:26:00 · 138 阅读 · 0 评论 -
Linux下core文件调试方法
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。 1.core文件的生成开关和大小限制 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 2)使用ulimit -c filesize命令,可以原创 2010-03-04 08:32:00 · 294 阅读 · 0 评论 -
GDB 命令详细解释
Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点 # 程序的单步执行 在使用gdb前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc或c原创 2010-03-16 15:25:00 · 679 阅读 · 0 评论 -
多线程使用unixODBC时,必须的配置(threading)(转)
unixODBC是linux在平台上实现的ODBC驱动管理器(Driver Manager),当应用程序调用C函数SQLDriverConnect时,会依据参数以及ODBC的配置文件内容去调用具体的ODBC驱动程序动态库。比如MaxDB的驱动libsqlod.so和MySQL的MyODBC驱动libmyodbc3.so等。 在linux下,ODBC的配置文件有如下位置: ~/.odbc.原创 2010-03-25 15:54:00 · 1017 阅读 · 0 评论 -
socket编程
int socket(int domain,int type,int protocol); (1):如果想单独处理TCP,UDP或者ICMP,可用AF_INET, 第三个参数用IPPROTO_TCP, IPPROTO_UDP等 (2):如果想对各种IP包进行处理,则用AF_PACKET/PF_PACKET,第三个参数用htons(ETH_P_IP) (3):如果想处理一切链路层上的包(IP,RARP,ARP等),则用AF_PACKET/PF_PACKET,第三个参数用 htons(ETH_P原创 2010-06-22 18:23:00 · 383 阅读 · 0 评论 -
Linux 2.6内核中提高网络I/O性能的新方法epoll(转)
正如我昨天在“Linux下各类TCP网络服务器的实现源代码”(http://zhoulifa.bokee.com/5345930.html)一文中提到的那样,I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。 感谢chinaunix.net上朋友safedead(http://bbs.chinaunix.net/viewpro.php?uid=407631)提醒,我今天仔细研究了一下,证实了在2.6内核中的新的I/O技术epoll。 1、为什么select是原创 2010-08-26 08:32:00 · 1105 阅读 · 0 评论 -
Linux下各类TCP网络服务器的实现源代码(转)
Linux下各类TCP网络服务器的实现源代码 大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。 首先,循环网络服务器编程实现的步骤是这样的: 建立socket(这里用到socket()函数及函数setsockopt()) |原创 2010-08-26 08:21:00 · 169 阅读 · 0 评论 -
Linux网络编程一步一步学-HTTPS客户端程序示例
<br />源代码如下:<br /> <br />#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <errno.h>#include <unistd.h>#include <netinet/in.h>#include <limits.h>#include <netdb.h>#include <arp转载 2010-09-01 14:06:00 · 1430 阅读 · 1 评论 -
Linux操作系统上Lsof命令详解
<br />一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”<br />我总结一下lsof指令的用法:<br />lsof abc.txt 显示开启文件abc.txt的进程<br />lsof -i :22 知道22端口现在运行什么程序<br />lsof -c abc 显示abc进程现在打开的文件<br />lsof -g gid 显示归属gid的进程情况<br />lsof +d转载 2010-09-15 13:45:00 · 418 阅读 · 0 评论 -
linux内核链表提取
list.h#ifndef IF_LIST#define IF_LIST#define LIST_HEAD_INIT(x) list_head x={&x, &x}#define LIST_HEAD_INIT_STATIC(x) static LIST_HEAD_INIT(x)struct __list_head{ struct __list_head* pre原创 2011-06-24 02:51:00 · 346 阅读 · 0 评论