Linux编程技巧
国境之南Fantasy
Coder
展开
-
linux库函数劫持技术
原文地址:linux库函数劫持技术 作者:CUKdd众所周知,在Windows平台下可以使用挂钩(Hook)技术,将系统中的鼠标、键盘等事件拦截下来,以添加实现自己的功能。同样的,在Linux系统中也有类似的技术,都可以起到挂钩(Hook)拦截的作用。虽然可以实现拦截的功能,但是它们的实现原理是不同的(这点一定要注意)。目前为止,笔者所知道的Linux系统下的一转载 2012-10-29 23:35:55 · 2505 阅读 · 2 评论 -
jiffies溢出与时间先后比较-time_after,time_before
1. 概述在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies?本文介绍了什么是jiffies,jiffies溢出可能造成的问题,使用time_after等宏来正确地比较时间及其背后的原理。2. jiffies简介2.1 时钟中断在Linux内核中,TCP/IP协议栈在很多用到时间比较的地方都使用了jiffies。那么jiffies是什么转载 2016-11-15 16:40:16 · 1192 阅读 · 0 评论 -
Linux 依赖动态库 / 静态库的动态态库 / 静态库
、 依赖动态库的动态库libfun.so依赖动态库libtest.so(libfun.so动态库里的函数intnothing()调用了libtest.so里的intmytest()函数),而main.exe又调用了libfun.so的函数int nothing()。 下面两种方式都能工作:1> 常用的方式g++ -shared -fPIC -o libtest.so tes转载 2016-11-15 12:44:43 · 1010 阅读 · 0 评论 -
prctl()函数应用
t prctl(int option,unsigned longarg2,unsigned long arg3,unsigned long arg4,unsigned long arg5)这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG :返回处理器信号; PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输转载 2014-04-24 13:33:37 · 76597 阅读 · 0 评论 -
ethtool 在 Linux 中的实现框架和应用
Linux 的一个显著特点就是其强大的网络功能,Linux 几乎支持所有的网络协议,并在这些协议基础上提供了丰富的应用。对 Linux 网络管理的重要性不言而喻,这些管理依赖于网络工具,比如最常用的 ifconfig,route,ip,ethtool 等,其中 ethtool 提供了强大的网卡及网卡驱动管理能力,其具体的实现框架和网络驱动程序及网络硬件关系紧密,容易修改和扩展,能够为 Linux转载 2015-12-02 10:21:01 · 1112 阅读 · 0 评论 -
Linux kernel多线程的几种实现
驱动开发中常常会启动几个内核线程,在整个驱动生命周期期间执行某些操作,比如USB驱动的控制线程,一直等待SCSI命令,没有命令的话睡眠,有命令的话就唤醒线程,解析执行相关的命令。还有USB驱动中的扫描线程,如果有新的设备连接到USB总线,则会启动扫描过程,平时时候让出CPU资源休眠。常用的内核线程创建方法有3个,kernel_thread, kthread_create和kthread_r转载 2015-11-23 19:47:48 · 1548 阅读 · 0 评论 -
深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题
最近一个项目遇到的一个问题,MongoDB和自家库中的md5函数出现冲突, 而且报的是莫名错误,经过仔细debug终于找到md5中的md5_finish覆盖出现的问题,今天抽了点时间写了些小程序测试了下注意:编译器为gcc,若使用g++, 请在库里面加上extern "C" 两个静态库首先测试静态链接库,大概的代码如下:libA.c转载 2015-08-19 11:45:57 · 538 阅读 · 0 评论 -
Linux守护进程的编程(C语言)
from: http://blog.163.com/hancker_31/blog/static/355873612011119104920847/一. 守护进程及其特性 守护进程最重要的特性是后台运行;其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的转载 2012-11-21 14:08:18 · 621 阅读 · 0 评论 -
SIGCHLD和waitpid的使用
from:http://www.douban.com/note/156155337/ SIGCHLD和waitpid的使用2011-06-14 14:07:41提问者:看unix网络编程第一卷的时候,碰到书上这样一个例子: 一个并发服务器, 每一个客户端连接服务器就fork一个子进程.书上讲到当同时有n多个客户端断开连接时, 服务器端同时有n多个子转载 2012-11-21 14:01:42 · 1232 阅读 · 0 评论 -
GDB & core dump
from:http://debugo.blog.51cto.com/3189391/622222一、core dump1.何谓 core dump? 在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料,线圈就叫作 core ,用线圈做的内存就叫作core memory。如今,半导体工业澎勃发展,已经没有人用core memory 了,不过,转载 2012-11-02 00:32:24 · 1395 阅读 · 0 评论 -
可变参数库函数的劫持
from:http://blog.donews.com/quickmouse/archive/2007/07/16/1187051.aspxby quickmouse quickmouse@263.net> 2007年7月16日 已经有不少的文章提到过Linux系统库函数劫持的方法,最主要的是利用LD_PRELOAD环境变量进行预加载,将自己写的库函数编译成.so转载 2012-10-29 23:37:36 · 1003 阅读 · 0 评论 -
结构体最后的长度为0或者1的数组
在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构:struct pppoe_tag { __u16 tag_type; __u16 tag_len; char tag_data[0];} __attribute ((packed)); 最后一个成员为可变长的数组,对于TLV(Type-Length-Val转载 2017-03-01 16:47:53 · 556 阅读 · 0 评论