自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

coder

It's art

原创 unix环境高级编程(中文第三版)堪误

[1].  207页,错误语句“它调用setuid函数把有效用户ID设置为实际用户ID”,正确的应该是“它调用seteuid函数把有效用户ID设置为实际用户ID” (如果有发现,持续更新中)

2017-03-29 17:59:02

阅读数 1063

评论数 0

原创 显式运行时加载

相比在编译期间显式链接,运行前隐式加载的方式,运行时显式链接并加载的方式显然更加灵活。 这种方式可以控制程序在需要时加载指定模块,甚至可以在不需要时卸载,从而减少程序启动时间和内存消耗,以及实现热更新这种功能。 linux上提供了以下4个api来支持共享对象的显式运行时访问 void...

2020-01-19 23:43:25

阅读数 15

评论数 0

原创 i386和arm32架构下函数栈帧分析

栈帧的实现实际跟系统本身的架构密切相关,这里主要对i386和arm32两种架构下的栈帧展开分析。 下面关于栈帧的分析都将基于这个例子进行: int func(int a,int b) { int sum; sum = a + b; return sum; } int ...

2018-10-24 15:15:36

阅读数 257

评论数 0

原创 libpcap源码分析_PACKET_MMAP机制

使用PACKET_MMAP机制的原因:         不开启PACKET_MMAP时的捕获过程是非常低效的,它使用非常受限的缓冲区,并且每捕获一个报文就需要一次系统调用,         如果还想获取这个报文的时间戳,就需要再执行一次系统调用.         而启用PACKET_MMAP的捕获...

2018-09-11 16:30:34

阅读数 830

评论数 1

原创 libpcap源码分析_从pcap_open_live说起

libpcap是跨平台网络数据包捕获函数库,本文将基于Linux平台对其源码以及核心原理进行深入分析 备注: 以下分析都基于libpcap-1.8.1版本进行        以下分析按照库的核心API为线索展开        以下分析源码时只列出核心逻辑 API: pcap_open_live ...

2018-09-06 21:16:54

阅读数 2112

评论数 0

原创 APUE之mmap机制

mmap(memery-mapped I/O)可以将一个文件或其他对象(比如一段匿名内存)映射到进程的虚拟地址空间。 mmap技术的用途主要有以下两个方面:     [1]. 将一个文件映射到进程的虚拟地址空间后,进程就可以直接访问这段虚拟地址来进行文件的I/O操作,而不再需要使用read、wri...

2018-07-31 08:21:31

阅读数 174

评论数 0

原创 APUE之记录锁

记录锁提供的功能:         当第一个进程正在访问文件的某个部分时,使用记录锁可以限制其他进程访问同一文件区的行为        这里需要注意一点,记录锁支持锁定文件的一个区域(当然也可以是整个文件)fcntl记录锁接口格式:        int fcntl(int fd,int cmd,...

2018-06-25 19:48:31

阅读数 78

评论数 0

原创 GNU make手册翻译系列(5)

4.6 没有配方或依赖的规则         如果一条规则没有配方或依赖,并且规则的目标不是一个存在的文件名,则执行此规则时,make就认为它的目标已经被更新过.这样的目标在作为一个规则的依赖时,因为依赖总被认为被更新过,因此作为依赖所在的规则中定义的命令总会被执行.看一个例子: clean: ...

2018-05-11 15:20:09

阅读数 114

评论数 0

原创 GNU make手册翻译系列(4)

4.5 伪目标      有这么一种目标,它不代表一个真正的文件名,执行make时可以指定这个目标来执行其所在规则定义的一系列配方,这种目标就叫伪目标.使用伪目标有两个原因:一个是避免跟同名文件出现冲突,另一个是提高执行make 时的效率.      如果你要书写这么一条规则:它的配方不会创建目标...

2018-05-08 14:55:17

阅读数 80

评论数 0

原创 GNU make手册翻译系列(3)

4.3 文件名使用通配符        单个文件名中可以使用通配符来指定许多文件.Makefile中的通配符和Bourneshell一样,包括"*","?","[...]".例如,"*.c"代表了当前工作目录下所有的以...

2018-05-05 12:04:21

阅读数 131

评论数 0

原创 GNU make手册翻译系列(2)

4.2 依赖类型         实际上有两种不同类型的依赖可以被GNUmake程序理解:一种是之前章节中描述的常规依赖;另一种是"order-only"依赖.常规依赖主要陈述了两件事:首先,由于目标的配方在执行之前必须确保该目标的所有常规依赖都已经更新,所以这些常规依赖的书写...

2018-05-04 16:29:22

阅读数 64

评论数 0

原创 GNU make手册翻译系列(1)

前言本系列翻译参考网上广传的<<GNU make中文手册>>,之所以要再次翻译一遍原因有二:        原有翻译基于V3.8版本的GNU make,跟手头版本V4.2已经存在不少差异;        通过翻译深入理解GNU make另,翻...

2018-05-04 14:34:11

阅读数 234

评论数 0

原创 lua中的协程

协程,也叫协同式多线程,跟普通的多线程一样,一个协程就代表了一条独立的执行序列.协程和普通多线程的区别在于:    普通的多线程,也叫抢占式多线程,意味着线程间的调度通常是由操作系统来完成;    而协程间的调度并不通过操作系统,而是由当前运行的协程显式的进行切换.lua实现的协程是一种非对称式协...

2018-04-16 20:09:34

阅读数 644

评论数 0

原创 APUE之I/O多路复用

I/O多路复用有3种具体实现模型:select、poll和epoll /* int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout) * @nfds ...

2018-03-07 15:34:40

阅读数 66

评论数 0

原创 APUE之非阻塞I/O

I/O操作(比如open、read、write、send、recv等)默认都工作在阻塞模式,意味着调用时有可能会使进程永远阻塞;而处于非阻塞模式的I/O操作如果不能完成,则调用立即出错返回。备注:这里需要注意的一点是,针对磁盘的I/O操作(无锁情况下)不会引发进程永远阻塞,比如read磁盘中的一个...

2018-02-20 22:32:32

阅读数 107

评论数 0

原创 APUE之异步信号安全和线程安全

1. 异步信号安全函数又被称为可重入函数,其定义源自单线程环境:        如果一个函数可以在执行期间的任意时刻被中断,并且可以在中断服务程序中再次被安全调用,以及在中断退出后还可以继续正确执行完函数的剩下部分内容,就称该函数为可重入函数。       1.1. 常用的可重入函数主要可以分为以...

2018-01-21 19:52:12

阅读数 208

评论数 0

原创 TCP/IP之ARP协议

1. 地址解析协议(ARP)提供了一种在IPv4地址和以太网地址之间的动态映射。    备注:         [1]. ARP仅用于IPv4,IPv6使用ICMPv6来完成类似的功能。         [2]. ARP仅工作在同一IP子网,这意味着ARP缓存中只会存在位于同一IP子网中的A...

2018-01-06 10:52:19

阅读数 794

评论数 0

原创 TCP/IP之IP地址

1. IP地址的表示方式 IPv4地址长度为32位,表示方式很简单,通常采用点分四组(又称为点分十进制)表示法,比如"192.168.9.10". IPv6地址长度为128位,完整的表示方法是采用8个块,块之间用":"分隔,每个块包含4个十六进制数,比如...

2017-12-21 22:07:47

阅读数 613

评论数 1

原创 nDPI快速上手指南

nDPI快速上手指南 这是一篇针对nDPI官方文档nDPI- Quick Start Guide的翻译,由于文档太老了(13年),所以部分接口已经发生了变化,本人将基于Version2.0对这些过时的接口进行更新。由于水平有限,翻译的、修补的内容不保证一定准确,各位最好上手之后对照源码细读一遍吧...

2017-12-14 20:06:07

阅读数 7082

评论数 1

原创 APUE之进程笔记(下)

1. 进程组    进程组是一个或多个进程的集合,同一进程中的各进程接收来自同一终端的各种信号。    每个进程组都有一个组长进程,组长进程ID就是该进程组ID。    只要进程组中有一个进程存在,该进程组就存在(跟组长进程是否提前终止无关)。    /* API  : pid_t getpgrp...

2017-11-13 09:10:27

阅读数 164

评论数 0

原创 APUE之信号

1. 信号的本质     信号是在软件层次上对中断机制的一种模拟,是IPC机制中唯一的异步通信机制.     进程本身是无法直接处理信号的,而是必须事先将处理方式告诉内核,处理方式可以分为三种:         [1]. 忽略此信号         [2]. 捕捉信号。这种方式需要...

2017-10-24 19:31:25

阅读数 163

评论数 0

原创 Linux环境编程主要头文件分析

适用于linux 3.14及以后 --------------------------------------------------------------------------------------------------- /usr/include目录下包含了linux环境编程时可以...

2017-09-28 15:35:34

阅读数 337

评论数 0

原创 802.1x认证详细剖析

1.概述 802.1X起源于无线网络标准802.11协议,802.11协议是标准的无线局域网协议,802.1X协议设计的最初的目的是为了解决无线局域网用户的接入认证问题,但由于其原理对于所有符合IEEE802标准的局域网具有普适性,因此在有线局域网中也得到了广泛的应用。 802.1X,全称为Por...

2017-09-21 11:33:15

阅读数 8791

评论数 2

原创 APUE之线程同步

1. 互斥量(pthread_mutex_t)     使用互斥量之前,必须先对它进行初始化,初始化互斥量的方式有以下2种:         [1]. 对于静态分配的互斥量通常在定义时就可以直接设置为常量PTHREAD_MUTEX_INITIALIZER         [2]. 对于动态分...

2017-09-20 09:58:10

阅读数 272

评论数 0

原创 linux的netlink接口详解(下)

——linux版本: 3.14.38 netlink支持用户进程和内核相互交互(两边都可以主动发起),同时还支持用户进程之间相互交互(虽然这种应用通常都采用unix-sock) 但是有一点需要注意,内核不支持接收netlink组播消息 本文将从用户进程发送一个netlink消息开始,对整个ne...

2017-09-04 09:59:55

阅读数 3874

评论数 0

原创 APUE之线程创建与终止

 1. 线程ID(pthread_t)     类似于进程ID的定义,线程ID用于在所在进程中唯一标识一个线程,虽然在linux中使用无符号长整型表示pthread_t,但不建议在实际操作中直接当作整数处理     /* API  : int pthread_equal(pthread_...

2017-08-09 23:00:10

阅读数 144

评论数 0

原创 APUE之线程属性

 1. 多线程的优势:     [1]. 通过合理的分配任务到多个线程,每个线程在进行事件处理时可以采用同步编程模式,相比异步编程,同步编程简单方便很多     [2]. 多个进程间进行数据交互必须通过各种IPC机制,而同一个进程下的多个线程间共享同一片地址空间,数据可以直接交互   ...

2017-08-07 23:30:01

阅读数 168

评论数 0

原创 Lua中的栈概念

Lua中设计"栈"的目的就是解决Lua与C的通信。 无论是Lua到C,还是C到Lua,所有的数据交换都需要通过"栈"来完成,此外还可以用"栈"来保存一些中间结果。 "栈"解决了Lua和C语言之间存在的两大差异: ...

2017-07-14 15:22:49

阅读数 458

评论数 0

原创 lua元表概念

 元表,顾名思义,它本身就是一个table,再具体一点说,就是用来存放元方法的table。 元表的作用就是修改一个值的行为(更确切的说,这是元方法的能力),需要注意的是,这种修改会覆盖掉原本该值可能存在的相应的预定义行为。 1. lua中的每个值都可以有一个元表,只是table和user...

2017-06-25 23:15:09

阅读数 1534

评论数 0

原创 linux的netlink接口详解(中)

本文介绍了linux内核中netlink模块的实现原理,主要包括整体架构和初始化相关

2017-06-23 13:36:13

阅读数 744

评论数 0

原创 APUE之进程笔记(上)

进程环境 ---------------------------------------------------------------------------------------------------- 1. 环境变量     每个进程在被创建的时候都会收到一张命令行参数表和一张环境...

2017-06-14 16:18:01

阅读数 188

评论数 0

原创 lua的代码块概念

 1. chunk(代码块),可以是一条语句,也可以是一系列语句的集合,还可以是函数。    chunk拥有独立的"词法域",意味着chunk内部声明的局部变量和局部函数,仅在该chunk内可见。    chunk的定义方式主要有以下几种:             ...

2017-06-11 23:12:21

阅读数 912

评论数 0

原创 lua中的迭代器分析

 1. 所谓"迭代器",就是一种可以遍历某个集合中所有元素的机制,在lua中迭代器通常表示为函数,而具体的实现有很多种。    整个迭代的过程基本如下:             首先是通过迭代器工厂创建迭代器;             然后每次调用这个迭代器时,它就...

2017-06-04 16:12:21

阅读数 381

评论数 0

原创 lua语言中的函数概念

 1. 不同于C,lua中的函数是一种first-class-value,这意味着:             lua中的函数可以视作一种"值"存储到变量或table中;             可以作为其他函数的实参;             可以作为其他函数中的返...

2017-06-02 22:45:58

阅读数 367

评论数 0

原创 openwrt 常用库用法

openwrt常用库用法 libubox 1.1.概述 libubox是openwrt的一个基础库,openwrt下大部分应用都是基于它开发的(ubus、uhttpd、uci等)。 libubox主要提供了两类功能: [1].一套完整的基于事件驱动的机制 ...

2017-05-25 19:49:56

阅读数 2280

评论数 0

原创 makefile整体性的一些概念

makefile的规则 /*************************************************************************************************** makefile的规则是makefile最核心的部分,规则的基本格式...

2017-05-16 19:33:47

阅读数 211

评论数 0

原创 APUE笔记之系统数据文件

1. 口令文件(/etc/passwd 644)     口令文件记录了linux用户账户以及相关信息(密码除外),每一行中各字段定义如下:         struct passwd {         char *pw_name;  // 用户名         char *pw_...

2017-04-26 16:16:25

阅读数 256

评论数 0

原创 linux下vlan的实现分析(上)

一. VLAN的核心概念     1. 划分VLAN的核心目的只有一个:分割广播域。        通过VLAN对广播域进行合理分割之后,一是可以缩小ARP攻击的范围,从而提高网络的安全性;二是可以缩小广播域的大小,从而提高网络的性能。        所以要注意的是,划分VLAN的目的中根本没有...

2017-04-25 10:11:50

阅读数 3081

评论数 0

原创 openwrt包的Makefile分析

***************************************************************************************************** *       一个标准的Makefile包大概可以简化为如下结构:             ...

2017-04-14 15:43:22

阅读数 1127

评论数 0

原创 linux的netlink接口详解(上)

内核版本:3.14.38 netlink是一种用于内核态和用户态进程之间进行数据传输的特殊的IPC机制。 特点:     1) 用户态采用socket风格的API     2) 除了预定义的协议类型之外,支持自定义协议类型     3) 异步通讯     4) 支持消息组播     4) 全双...

2017-04-06 11:30:21

阅读数 6718

评论数 0

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