- 博客(65)
- 资源 (4)
- 收藏
- 关注
原创 openwrt 使能wifi 修改ip wan lan 口
openwrt运行环境下:root@OpenWrt:~# vim /etc/config/network option ipaddr '127.0.0.1' option netmask '255.0.0.0' ...
2019-01-22 14:50:26
6175
原创 openwrt 将应用程序添加到固件并设置随系统自启动
1、将应用打包到openwrt固件在openwrt_chaos_calmer_15.05目录下新建files目录/ 在该目录下添加需要编译到固件中的文件zzq@osgi$ lsfelix-framework-4.2.0 2、在 openwrt/package/base-files/files/etc/init.d/下添加自启动脚本startfelixopenwrt_chao...
2019-01-16 17:50:03
3235
原创 CC+语言 struct 深层探索——CC + language struct deep exploration
1 struct的巨大作用 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开
2013-10-30 23:59:25
1656
原创 C 语言高效编程的几招——A few action of efficient C language programming
编写高效简洁的C 语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。 第1招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。 例如:字符串的赋值。方法A,通常的办法: #define LE
2013-10-30 23:56:46
1596
原创 什么是MAC地址及作用管理教程——What is the MAC address and role management tutorial
如果你是通过校园网或小区接入Internet,那么一定听说过MAC地址。什么是MAC地址,MAC地址在这种局域网环境中究竟起到什么作用?下面就来介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题。 一、基础知识 如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来组成整个网络。局域网也不例外,一般来说,在组
2013-10-29 23:33:55
3846
原创 网络7层协议详解——Network layer protocol
OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。下面我简单的介绍一下这7层及其功能。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 其中高层,既7、6、5、4层定义了应用程序的功能,下面3层,既3、2、1层主要面向通过网络的
2013-10-28 23:37:57
7319
原创 IP地址的划分 -- The division of the IP address
现在的IP网络使用32位地址,以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址。最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应
2013-10-28 23:21:11
1466
原创 C++类对象的复制-拷贝构造函数——The c + + class object replication - copy constructor
我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如:int a = 10;int b =a; 自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:#include iostream> using namespace std; class Test {
2013-10-26 20:34:38
1177
原创 管道通信——Pipeline communication
//using pipe the communication between f proccess and c proc ////#include #include #include #include #include #include #define BUFSIZE 1024int main(){ int ret,retw; pid_t pid
2013-10-26 18:01:28
1497
原创 信号量—— semaphore
// 信号量:锁机制,进程并发处理(内核全局)#include #include #include #include #include #include #include #define PROCNUM 20 #define FNAME "/tmp/out"#define LINESIZE 1024static int semid;// 提取资源 -
2013-10-26 17:58:53
974
原创 共享内存——The Shared memory
// share the memory space// 出于多个进程之间通信考虑的// 每个IPC的object 通过键,进程识别所用的object#include #include #include #include #include #define MEMSIZE 2048int main(){ int shmid; pid_t pid;
2013-10-26 17:55:31
1002
原创 消息队列——The message queue
//消息队列:数据通讯// 点对多,离线通讯。// ftok();索取KEY值//// msgget();创建// msgctl();删除// msgsnd();发送// msqrcv();接收#include #include #include #include #include #include #include "proto
2013-10-26 17:52:40
1279
原创 IPC——共享内存
a) 意义:多个进程共享一部分物理内存。访问快,方便 b) 先创建共享内存:int shmget(key_t key, int size, int shmflg) 1. Key:标志共享内存的键值;0/IPC_PRIVATE a) Key=0 ...a) 意义:多个进程共享一部分物理内存。访问快,方便 b) 先创建共享内存:int shmget(key_
2013-10-25 23:45:49
1005
原创 Linux内核简介——Introduction of the kernel
LINUX内核简介:a) LINUX体系结构: i. 用户空间:应用程序,C库 ii. 内核空间:系统调用接 ... LINUX内核简介:a) LINUX体系结构: i. 用户空间:应用程序,C库
2013-10-25 23:44:03
863
原创 IPC——信号量(semaphore)
a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1; 1. 实质:是一个整数,初始值为1; 2. 二值信 ...a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1; 1. 实质:是一个整数,初
2013-10-25 23:37:04
954
原创 IPC——消息队列
a) 本质:消息链表 b) 分类: 1. POSIX消息队列:可移植操作系统接口 2. 系统V:随内核持续的,只有在内核重启和人工删除,才会被删除。每个消息队列对应唯一的键值 c) ...a) 本质:消息链表 b) 分类: 1. POSIX消息队列:可移植操作系统接口 2. 系统V:随内核持续的,只有在内核
2013-10-25 23:34:39
896
原创 进程间通信——IPC
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间
2013-10-25 23:00:03
888
原创 openmp——多线程实例
#include #include #define LEFT 30000000#define RIGHT 30000200int main(){ int i,j,mark;#pragma omp parallel for private(j,mark) for(i = LEFT; i { mark = 1; for(j = 2; j {
2013-10-23 23:34:11
1261
原创 有限状态机——The finite state machine
依据状态之间是否有包含关系,分以下两种(1)常规状态机。状态机中的所有状态是不相交的、互斥的。(2)层次状态机。状态机中的状态之间要么是互斥的,要么是真包含的,可以用树性结构来描述这些状态集,包含其它状态的状态称为枝节点,不包含其它状态的状态称为叶节点,为方便单树描述,总是设计一个状态包含所有的状态节点,称为根节点。状态机的状态只能停留在叶节点,而不能停留在枝节点,每个枝节点需要指定一个子
2013-10-23 23:11:28
1846
原创 The finite state machine
#include #include #include #include #include #include #include #include "relayer.h"#define TTY1 "/dev/tty11"#define TTY2 "/dev/tty12"#define TTY3 "/dev/tty10"#define TTY4 "/dev/t
2013-10-23 23:01:11
942
原创 有限状态机—— FSM(finite-state machine)
//有限状态机 finite-state machine#include #include #include #include #include #include #include #define TTY1 "/dev/tty11"#define TTY2 "/dev/tty12"#define BUFSIZE 1024enum{ STATE
2013-10-23 22:50:46
2752
原创 pthread线程的加锁问题——thread locking problems
1 互斥变量: pthread_mutex_t,本质上说是一把锁,在访问共享资源前对互斥量加锁,访问完成后释放锁。 对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直至当前线程释放该互斥锁。pthread_mutex_lock : 加锁pthread_mutex_unlock:解锁2 条件变量:pthread_cond_t,多个线程协作的一种同步方式,若某个
2013-10-21 23:43:03
2774
原创 线程——thread exercise about file
#include #include #include #define THRNUM 20 #define FNAME "/tmp/out"#define LINESIZE 1024#if 0 static pthread_mutex_t foo_mutex = PTHREAD_MUTEX_INITIALIZER; void foo() {
2013-10-21 23:37:41
1076
原创 thread execute primer
#include #include #include #define LEFT 30000000#define RIGHT 30000200#define THRNUM (RIGHT-LEFT+1)static void *thr_prime(void *p);//struct thr_arg_st{ int n;};int main(){
2013-10-21 23:34:38
1182
原创 thread_cleanup
// void pthread_cleanup_push(void (*routine)(void*), void *arg);// void pthread_cleanup_pop(int execute);//#include #include #include static void cleanup_func(void *p){ puts(p);}
2013-10-21 23:31:10
1065
原创 线程——create pthread
//// create a pthread// int pthread_create(pthread_t *restrict thread,// const pthread_attr_t *restrict attr,// void *(*start_routine)(void*), void *restrict arg
2013-10-21 23:19:13
884
原创 文件锁 fcntl()——File locks
一.fcntl()函数说明:当多个用户共同使用、操作一个文件的情况下,这时,Linux通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重己有的锁。在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当文件上锁进行写入操作时,内核将阻止其他任何文件对其进行读写操作。采用强制性锁
2013-10-20 16:55:04
2739
原创 关于fork进程的理解——Understanding about the fork process
先看看一段fork的程序 int main(){ pid_t pid; 语句 a; pid = fork(); 语句 b;} 1.当程序运行到 pid = fork()时,这个进程马上分裂(fork的中文意思)成两个进程,我们称为父进程和子进程,子进程是父进程的副本,副本的意思是子进程把父进程的数据空间,堆和
2013-10-20 16:22:57
1020
原创 fork()函数的经典分析——Classic analysis of the fork () function
第一贴:cu上关于fork()函数的精辟分析声明:在别人的博客上看到这篇文章,真的很精辟,把问题一下子讲清楚了。所以,特意转贴在此,向各位高人致敬,也向原贴主致谢!本人不改变原贴的风貌. 作者:ccf 发表于:2006-04-01 17:11:01#include ; #include ; main (
2013-10-20 14:49:06
1228
原创 信号掩码——The signal mask
一. linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128*8 = 1024个信号。现在只有64个信号,所以只要考虑最前面的两个long就可以了。sigset_t mask;unsigned long *pl = (unsigned long*)&m
2013-10-20 14:16:52
2661
原创 Linux信号集 —— Signal set and using
1. 信号集概念 信号集是一个能表示多个信号的数据类型,sigset_t set ;set即一个信号集。 既然是一个集合,就需要对集合进行添加/删除等操作。 int sigemptyset(sigset_t *set); 将set集合置空 int sigfillset(sigset_t *set); 将所有信号加入set集合 int sigaddset(sigs
2013-10-20 12:01:18
2025
原创 setjmp——longjmp
#include #include #include static jmp_buf save;static void d(void){ printf("%s():Begin!\n",__FUNCTION__); printf("%s():Jump now!\n",__FUNCTION__); longjmp(save,0); printf("%s()
2013-10-18 23:57:08
947
原创 mydate
#include #include #include #include #include #define STRSIZE 1024int main(int argc,char *argv[]){ FILE *fp = stdout; time_t stamp; time_t stamp1; struct tm *tm; char timestr[
2013-10-18 23:53:34
1122
原创 linux——fork(进程)
1 #include 2 #include 3 #include 4 5 int 6 main(void) 7 { 8 int i = 0; 9 pid_t fpid;10 printf("i\tson/pa\tppid\tpid\tfpid\n");11 12 for(i = 0; i 13
2013-10-18 23:44:07
1018
原创 linux流量控制 ——Linux flow control
Linux流量控制控发不控收,所以只能对产生瓶颈网卡处的发包速率进行控制..而网络瓶颈分析亦为Linux网络流控的第一步。二种流控算法上分: 无类算法用于树叶级无分支的队列SFQ TBF pFIFO 分类算法用于多分支的队列PRIO HTB CBQ调度在分类器的帮助下,一个
2013-10-18 23:39:59
4890
原创 进程间通信——Interprocess communication
一、管道的特性 管道是UNIX系统IPC的最古老形式,并且所有UNIX系统都提供此种通信机制。但是管道有以下两种局限性: (1)半双工的(即数据只能在一个方向上流动),虽然有系统提供全双工的管道,但是为了可移植性,用户不能假设这种情况; (2)管道只能在具有公共祖先的进程之间使用。二、管道的创建管道由pipe函数创建: 1 #include 2 int p
2013-10-18 23:37:39
1221
原创 经典c程序100例==1--100——Classic c program 100 = = 1-100
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i for(j=1;j for (k=1;k
2013-10-17 22:57:22
1451
原创 Linux程序开发者的开发经验谈 ----Linux developers development experiences
Sppence Murray 是 Linux 开发高手之一,同时长期以来他一直是 UNIX 的坚定支持者。本文介绍的是 Murray 和他在 Codemonks Consulting 的同事在日常的 Linux 开发以及应用服务工作中用到的基本技术: shell 脚本,相信 Linux 的开发人员都会受益于这项有用而且通用的技术。Spence Murray 是 Codemonks Consul
2013-10-17 22:49:14
945
原创 Linux - embedded - tools
1.交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。交叉编译就如同翻译一样,把相同的程序代码翻译成不同的CPU对应语言。2.交叉调试份为软件调试和硬件调试。 交叉调试的特点:*调试器和被调试的程序运行在不同的机器上,调试器运行在PC机或工作站上,而被调试的进程则运行在各种专业调试板上。*调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程。*在目标
2013-10-17 22:29:45
1020
原创 Linux流量控制——Linux flow control
Linux操作系统中的流量控制框架创建了一个通用环境,它集成了所有用于限制和流量整形的可以互联的不同元素。在实际操作中这些元素甚至可以作为一个模块动态地加载和卸载。 TC(Traffic Control)工具提供了一个命令行用户接口来配置Linux流量控制。该工具让用户可以设定并配置几乎所有的流量控制框架要素,比如排队规则(qdisc)、类(class)及过滤器(filter),他们之间
2013-10-17 21:39:30
3571
Makefile工具的使用——The use of a Makefile tool
2013-10-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人