自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鬼手

致力于网络技术研究。

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux获取指定接口的IP

#include #include #include #include #include #include #include #include #include #define NIPQUAD(addr) \ ((unsigned char *)&addr)[0], \ ((unsigned char *)&addr)[1], \ ((unsigned

2012-08-26 17:23:48 1761

原创 内存分配钩子__malloc_hook, __reallac_hook, __free_hook的使用

mem.h#ifndef __MEM_H__#define __MEM_H__#include #include static void *(*old_malloc_hook)(size_t, const void*);static void *(*old_realloc_hook)(void *ptr, size_t size, const void *caller);sta

2012-08-26 17:11:53 4775 2

原创 字符串旋转算法 -- 求逆

#include #include void reverse(char *array, int begin, int end){ char tmp; while (begin < end) { tmp = array[begin]; array[begin] = array[end]; array[end] = tmp

2012-08-24 20:52:32 1021

原创 linux获取指定网口的MAC

#include #include #include #include #include #include #include #include int obtain_mac(const char *ifname, unsigned char *mac, int len){ int sk = -1, ret = 0; struct ifreq ifreq;

2012-08-11 10:03:09 2241

原创 命令行邮件发送工具

command line email utilityfebootihttp://www.febooti.com/

2012-08-07 19:01:32 865

原创 jpgraph联合tcpdf动态生成图文并茂的pdf文件

基础环境:PHP5因为jpgraph依赖于GD库,所以使用jpgraph之前需确认GD库是否已经安装。(GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。)如何确认GD库是否安装?方法如下:在apache网站根目录(默认为/var/www)建立一个文件,如phpinfo.php,内容如下:<%phpphpi

2012-07-29 22:42:54 3756

原创 MYSQL常用命令

MySQL常用命令1. 创建数据库create database name;2. 选择数据库use databasename;3. 删除数据库drop database name;drop database if exists name;4. 显示数据库中的表show tables;5. 显示表头desc tabl

2012-07-29 00:33:44 373

原创 64位Centos6.0上编译32位程序

1. 查看当前系统的版本,确定当前系统是64系统[root@zjh:~]# uname -r2.6.32-5-amd642. 查询编译环境是否完备确认下"Development tools", "Compatibility libraries" 这两个组件有没有安装:[root@zjh:~]# yum grouplist "Development tools" "Co

2012-07-24 17:09:02 1349

原创 监测linux磁盘IO实时情况

Linux 内核里提供了一个 block_dump 参数用来把 block 读写(WRITE/READ)状况 dump 到日志里,这样可以通过 dmesg 命令来查看,具体操作步骤是:# sysctl vm.block_dump=1or# echo 1 > /proc/sys/vm/block_dump

2012-07-20 18:19:22 603

原创 用perl生成linux密码

perl -e 'print crypt("test",q($6$hoiLHdTI)) ."\n"'结果如下:$6$hoiLHdTI$hmqx7iThdTf3lW3oQcaGimBfx.LapJ8Q9a8rvnlw.Zg.6KTx5Bv0ZeAnaTUTSDkbi83ie7828.O.25/l90AW0/

2012-07-19 08:56:04 1095

转载 Bash history命名配置及使用

历史是宝贵的财富,当然也包括编程的时候。bash history有多种使用方式,最简单的方式就是按上下方向键。按一次“上”键,bash列出上次运行的命令,按两次,bash则列出再上次运行的命令;按“下”键正好相反,bash列出当前命令之后运行过的命令。方向键按几次还受得了,如果想运行的命令距离太远,超过了重新输入一遍的代价,就不值得使用这种方式了。这时我们有两种选择:使用histo

2012-07-02 19:38:27 571

转载 使用objdump看内核源码

1. 修改源代码的顶层  Makefile   CC =$(CROSSCOM_PILE)gcc -->   CC =$(CROSSCOM_PILE)gcc   -g   使成生的vmlinux中含有debug信息2. 所有生成.o的rule中再加一条     /*其他参数除了-c外抄生成.o文件用的参数*/   CC   -E  -dD -C $ /preprocessing/

2012-06-20 12:48:52 1229

转载 打印函数调用栈----backtrace原理简单实现

backtrace函数是callstack调试器的基本功能之一,利用此功能,可以看到各级函数的调用关系。在gdb中,这一功能被称为backtrace,输入bt命令就可以看到当前函数的callstack。它的实现多少有些有趣,这里研究一下。我们先看看栈的基本模型参数N↓高地址参数…函数参数入栈的顺序与具体的调用方式有关

2012-06-13 08:52:18 11243 1

转载 bit、Byte、bps、Bps、pps的详细介绍

1)bit与Byte在计算机科学中,bit是表示信息的最小单位,叫做二进制位;一般用0和1表示。Byte叫做字节,由8个位(8bit)组成一个字节(1Byte),用于表示计算机中的一个字符。bit(比特)与Byte(字节)之间可以进行换算,其换算关系为:1B(Byte)=8b(bit)位1KB=1024B1MB=1024KB1GB=1024MB2)b

2012-04-16 21:19:26 2164

转载 windows下查看某个端口被哪个程序占用的方法

经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的9050端口 1、Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况C:\>netstat -ano  协议    本地地址

2012-04-16 19:26:53 6143

原创 如何判断进程是否为daemon

通过命令ps -e -o pid,ppid,cmd,tty可以看出但凡daemon进程,其tty都显示为?,也就是不存在tty 1629     1 /usr/sbin/sshd              ? 1684     1 /usr/sbin/boa               ?可以通过这样的方法来判断进程是否为daemon/* * 判断进程是否为daemon进程

2012-03-13 15:30:26 1235

原创 删除匹配关键字的行和后几行

text.txt:37. Yahoo! Messenger: Chat (12) This scenario contains user-initiated operations of Yahoo! Messenger on a PC.  The user logs into Yahoo! Messenger, selects a friend, and initiates a chat

2012-03-10 14:13:26 3008

原创 linux2.6内核系统调用的增加方法

内核版本linux-2.6.381. 定义系统调用名在linux-2.6.38/kernel目录新增一C文件,如:newsyscall.c#include #include asmlinkage int sys_newsyscall(int a, int b){ int c = 0; printk("Add a new syscall!\n"); c = a + b;

2012-03-06 13:15:05 1433

原创 程序中打印IP的方法

IP的打印,老是记不住应用层printf("ip = %d.%d.%d.%d", NIPQUAD(ip));内核printk("ip = %pI4", NIPQUAD(ip));

2012-03-04 11:19:03 1111

原创 字节对齐的一般算法

比如要4字节对齐的话,采用的计算方法为:int align_base = 4;align_len = (len + (align_base - 1)) & ~align_base;

2012-02-27 12:39:25 867 2

原创 linux daemon中执行system调用方法

daemo中若忽略掉了SIGCHLD信号,则在使用system函数时,需先把忽略的信号设置为默认处理方式,然后才能调用system函数。否则system调用得到的返回值将不是子进程的返回值。signal(SIGCHLD, SIG_DFL);ret = system(cmd);signal(SIGCHLD, SIG_IGN);

2012-02-27 12:35:51 617

原创 linux中如何让程序出错产生core

ulimit -c unlimited

2012-02-27 12:30:49 397

原创 bash 寻找包含特定关键字的文件

方法1:find . -exec grep "yourkeyword" '{}' \; -print方法2:grep -R "yourkeyword" ./*

2012-02-27 12:27:20 687

原创 bash中使用随机数

产生正数公式:rnumber=$(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min))例子# 在6 到30 之间产生随机数.rnumber=$((RANDOM%25+6))# 还是产生6-30 之间的随机数,#+ 但是这个数字必须被3 均分.rnumber=$(((RANDOM%30/3+1)

2012-02-27 12:22:49 1747

原创 linux共享内存的使用--测试程序

#include #include #include #include #include #include #define MB (1 << 20)#define SHM_MODE 0600int main(int argc, char **argv){ int shmid = 0; char *shmptr = NULL; unsigned lon

2012-02-27 08:45:00 432

原创 Linux内核参数-共享内存信号量设置

共享内存:可以通过ipcs -lm命令查看目前系统共享内存的参数限制:# ipcs -lm—— Shared Memory Limits ——–max number of segments = 4096max seg size (kbytes) = 1048576max total shared memory (pages) = 2097152min s

2012-02-27 08:41:30 626

转载 awk 内置变量的使用

awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是awk内置变量。 一、内置变量表属性说明$0当前记录(作为单个变量)$1~$n当前记录的第n个字段,字段间由FS分隔FS输入字段分隔符 默认是空格NF当前记录中的字段个数,就是有多少列

2012-02-22 17:39:31 467

原创 GCC4的高级功能--缓冲区溢出和栈溢出检测

选项-D_FORTIFY_SOURCE,可检测缓冲区溢出选项-fstack-protector,可检测栈溢出示例:CFLAGS+= -O1 -D_FORTIFY_SOURCE=2 -fstack-protector-all

2012-02-21 12:39:21 971

转载 Linux多线程编程详细解析----条件变量 pthread_cond_t

Linux操作系统下的多线程编程详细解析----条件变量 1.初始化条件变量pthread_cond_init#include int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。

2012-01-31 08:51:22 388

原创 更改linux系统共享内存最大值

echo 1073741824 > /proc/sys/kernel/shmmax

2012-01-02 12:59:27 694

原创 用grep提取正则匹配上的字符串

echo "a192.67.20.1abc192.168.20.1a" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o

2011-12-30 19:25:04 21413

原创 vim缩进与TAB设置

set ci        # 开启cindent set noet   # 关闭expandtab set sw=4 # shiftwidth=4与自动缩进相关的变量表名称:(no)autoindent 缩写:ai含义:自动缩进,即为新行自动添加与当前行同等的缩进。名称:(no)cindent 缩写:ci含义:类似C语言程序的缩进名

2011-12-29 12:16:28 4960

原创 bash中的信号捕获

格式:trap 动作 信号Example:trap `rm -f /var/run/test.pid` INT信号名称可通过kill -l查看

2011-11-20 22:24:44 562

原创 bash字符串截取

1. ${var%suffix}删除位于var结尾的最小匹配模式Example:var=abcdeeeeft${var%e*} = abcdeee2. ${var%%suffix}删除位于var结尾的最大匹配模式Example:var=abcdeeeeft${var%%e*} = abcd3. ${var#suffix}删除位于var开头的最小匹配模式Example:

2011-11-20 22:19:20 330

原创 bash参数使用技巧

$0 = shell名称或shell脚本名称$1 = 第一个shell参数...$9 = 第九个shell参数$# = 位置参数的个数"$*" = "$1 $2 $3 $4 .. $n""$@" = "$1" "$2" "$3" "$4" .. "$n"$? = 最近执行的命令的退出状态$$ = 当前shell脚本的PID$! = 最近启动的后台作业的PID

2011-11-20 22:13:12 555

原创 bash中的if点滴

if 条件判断:[ -a FILE ] 如果 FILE 存在则为真。[ -b FILE ] 如果 FILE 存在且是一个块设备文件则为真。[ -c FILE ] 如果 FILE 存在且是一个字符设备文件则为真。[ -d FILE ] 如果 FILE 存在且是一个目录则为真。[ -e FILE ] 如果 FILE 存在则为真。[ -f FILE ] 如果 FILE 存在且是一个普通文件则

2011-11-20 22:10:03 368

原创 lsof命令使用详解

lsof命令只能以root的权限执行用法如下:1. 显示开启文件abc.txt的进程lsof abc.txt2. 显示22端口现在被什么程序占用lsof -i 223. 显示abc进程现在正在打开的文件lsof -c abc4. 显示归属gid的进程情况lsof -g gid5. 显示指定目录下被进程开启的文件

2011-11-20 21:52:41 488

原创 vi比较有用的命令

1. 上下左右移动(hjkl)2. 选中一整行(V)3. 选中一部分(v)4. 跳到文件头(gg)5. 跳到文件尾(G)6. 撤销(u)7. 恢复(ctrl+r)8. 将选中文字转为大写(U)9. 跳到最后一次修改处(’+.)10. 跳到光标上一次所在出('+')11. 以十六进制显示(:%!xxd -g 1或者:%!

2011-11-20 21:31:47 415

原创 通过netlink实现内核模块和应用层通信

贴上代码,方便以后查阅。skb常用操作函数,比较容易弄混skb_put : skb->tail += len, skb->len += lenskb_pull: skb->data += len, skb->len -= lenskb_push: skb->data -= len, skb->len += len内核版本linux2.6.38,编译环境gcc 4

2011-10-29 22:50:22 2549

原创 linux下用RAW socket发送syn包

源码编译方法:gcc -o syn syn.c结果:在centos6上成功运行,用tcpdump抓包分析,发送的对端有syn,ack包返回,一切正常。过程:写代码时忘记了对tcph->protocol赋值,计算出得checksum老不对,数据包是成功发出去了,但是对端没syn,ack包回,查了几个小时,郁闷死我~~~疑问:ip->check为0是内核会计算ip头的checksu

2011-10-20 21:41:57 2844 1

学编译原理不可或缺的书

学编译原理不可或缺的书:编译原理 flex&bison; linker and loader

2012-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除