- 博客(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 1790
原创 内存分配钩子__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 4884 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 1046
原创 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 2254
原创 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 3783
原创 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 401
原创 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 1367
原创 监测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 614
原创 用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 1140
转载 Bash history命名配置及使用
历史是宝贵的财富,当然也包括编程的时候。bash history有多种使用方式,最简单的方式就是按上下方向键。按一次“上”键,bash列出上次运行的命令,按两次,bash则列出再上次运行的命令;按“下”键正好相反,bash列出当前命令之后运行过的命令。方向键按几次还受得了,如果想运行的命令距离太远,超过了重新输入一遍的代价,就不值得使用这种方式了。这时我们有两种选择:使用histo
2012-07-02 19:38:27 592
转载 使用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 1263
转载 打印函数调用栈----backtrace原理简单实现
backtrace函数是callstack调试器的基本功能之一,利用此功能,可以看到各级函数的调用关系。在gdb中,这一功能被称为backtrace,输入bt命令就可以看到当前函数的callstack。它的实现多少有些有趣,这里研究一下。我们先看看栈的基本模型参数N↓高地址参数…函数参数入栈的顺序与具体的调用方式有关
2012-06-13 08:52:18 11379 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 2372
转载 windows下查看某个端口被哪个程序占用的方法
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的9050端口 1、Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况C:\>netstat -ano 协议 本地地址
2012-04-16 19:26:53 6164
原创 如何判断进程是否为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 1270
原创 删除匹配关键字的行和后几行
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 3059
原创 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 1462
原创 程序中打印IP的方法
IP的打印,老是记不住应用层printf("ip = %d.%d.%d.%d", NIPQUAD(ip));内核printk("ip = %pI4", NIPQUAD(ip));
2012-03-04 11:19:03 1145
原创 字节对齐的一般算法
比如要4字节对齐的话,采用的计算方法为:int align_base = 4;align_len = (len + (align_base - 1)) & ~align_base;
2012-02-27 12:39:25 889 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 634
原创 bash 寻找包含特定关键字的文件
方法1:find . -exec grep "yourkeyword" '{}' \; -print方法2:grep -R "yourkeyword" ./*
2012-02-27 12:27:20 706
原创 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 1768
原创 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 446
原创 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 657
转载 awk 内置变量的使用
awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是awk内置变量。 一、内置变量表属性说明$0当前记录(作为单个变量)$1~$n当前记录的第n个字段,字段间由FS分隔FS输入字段分隔符 默认是空格NF当前记录中的字段个数,就是有多少列
2012-02-22 17:39:31 478
原创 GCC4的高级功能--缓冲区溢出和栈溢出检测
选项-D_FORTIFY_SOURCE,可检测缓冲区溢出选项-fstack-protector,可检测栈溢出示例:CFLAGS+= -O1 -D_FORTIFY_SOURCE=2 -fstack-protector-all
2012-02-21 12:39:21 1004
转载 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 402
原创 用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 21480
原创 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 4991
原创 bash中的信号捕获
格式:trap 动作 信号Example:trap `rm -f /var/run/test.pid` INT信号名称可通过kill -l查看
2011-11-20 22:24:44 579
原创 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 341
原创 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 563
原创 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 392
原创 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 504
原创 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 430
原创 通过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 2597
原创 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 2907 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人