自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 linux更新文件

最近发现很多同学不知道线上操作替换文件的要点。所以又整理了一下。 线上替换一个正在运行进程的文件时(包括二进制、动态库、需要读取的资源文件等)。应避免使用cp/scp操作。而需要使用mv/rsync作为替代。原因:cp是将源文件截断然后写入新内容。也就是说正在打开这个文件的进程可以立刻感知到修改。修改文件内容很可能导致程序逻辑错误甚至崩溃。而mv则是标记”删除“老文件,然后放一

2017-07-20 10:36:10 2360

原创 linux 只获取dns服务器地址

有一款设备需要使用静态ip,但是还要用到dns解析域名。我的想法是定时去查看/etc/resolve.conf文件,如果为空,则获取一次dns。在嵌入式linux中,我们使用busybox的udhcpc来获取ip,netmask,网关和dns。运行udhcpc,在获取到ip,dns等信息后并不会直接更细系统的相关信息,而是调用一个脚本去设置。如本次使用的/etc/udhcpc.d/

2017-01-22 10:04:28 3124

转载 Linux内核里的DebugFS

作者:wwang出处:http://www.cnblogs.com/wwang 本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有pro

2017-01-12 10:38:29 463

转载 GNU ARM汇编

尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [} @ comment[:] [} @

2016-10-26 14:55:09 453

转载 patch学习

@@ -1,7 +1,7 @@ ##表示下面列的内容为旧文件的1到7行和新文件的1到7行;如下面的例子,旧文件比新文件多一行。diff -urN u-boot-1.1.6/common/env_nand.c u-boot-1.1.6_jz2440/common/env_nand.c--- u-boot-1.1.6/common/env_nand.c    2006-11-02 22:15:

2016-10-25 19:40:14 412

转载 多进程 写文件 导致文件清空

一个程序更改配置文件中的字段,脚本中也使用sed修改该配置文件。发现有时候配置文件内容被清空,查看此篇文档后确实发现程序内打开文件时使用了w。===============转载 一直以为多进程读写文件是安全的,只有fflush和fclose才会真正修改文件内容,诸多开源项目的日志系统也基本都是多线程的,asterisk同样没有为ast_log建立一个专门的日志线

2016-10-14 15:56:49 1206

转载 linux重定向

在了解重定向之前,我们先来看看linux 的文件描述符。linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。 linux启动后,会默认打开3个文件描述符,分别是:标准输

2016-10-14 13:05:17 279

转载 多个进程对同一文件写入的问题

转载。讨论关于并发环境下,多个进程对同一文件写入的问题,我们会涉及到文件共享的知识。在开始之前,我们先讨论一些有关文件共享的知识。1. 文件共享  Unix系统支持在不同进程间共享打开的文件。为此,我们先介绍一下内核用于所有I/O的数据结构。注意,下面的说明是概念性的,与特定的实现可能匹配,也可能不匹配。  内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面

2016-10-14 10:00:14 10717

转载 free后指针为NULL?

别看 free 和delete 的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。    用调试器跟踪示例程序,发现指针p 被free 以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把p 设置为NULL,会让人误以为p 是个合法的指针。    如果程序比较长,我们有时记不住p 所指的内存是否已经被释

2016-10-11 15:56:54 5423

转载 linux SIGABRT信号

自己写的程序启动时偶尔会被SIGABRT信号杀死。故查看下SIGABRT的用法。SIGABRT是中止一个程序,它可以被捕捉,但不能被阻塞。处理函数返回后,所有打开的文件描述符将会被关闭,流也会被flush。程序会结束,有可能的话还会core dump。 当程序调用abort(3)时,该进程会向自己发送SIGABRT信号。所以,SIGABRT一般用于信号中一些关键的处理,assert失败时也

2016-10-11 15:28:38 2556

转载 Makefile 中:= ?= += =的区别

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE    VRE = “Hello World!”elseendififeq ($(OPT),define)    VRE ?= “Hello World! First!”endifif

2016-09-06 14:41:57 242

转载 linux 内存释放

总有很多朋友对于Linux的内存管理有疑问,之前一篇[转]理解Linux的性能日志似乎也没能清除大家的疑虑。而在新版核心中,似乎对这个问题提供了新的解决方法,特转出来给大家参考一下。最后,还附上我对这方法的意见,欢迎各位一同讨论。    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有

2016-08-29 10:34:17 545

转载 /proc/$pid/status内容说明

/proc/9744$ cat statusName: gedit /*进程的程序名*/State: S (sleeping) /*进程的状态信息,具体参见http://blog.chinaunix.net/u2/73528/showart_1106510.html*/Tgid: 9744 /*线程组号*/Pid: 9744 /*进程pid*/PPid: 7672 /*父进程的

2016-07-26 09:16:29 657

转载 uboot.bin和uboot.img关系

从别的网站上扒的。Ask:I just compiled the U-Boot bootloader and I see a few file names in the u-boot program directory which are:u-boot.binu-boot.imgu-boot.ldsu-boot.srecBasically, I'm inte

2016-07-22 15:50:01 5722

转载 protobuf,json,xml,binary,Thrift之间的对比

一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的。protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问protobuf的google官方网站。protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量

2016-07-14 11:01:20 533

转载 动态库*.so制作-linux

动态库*.so制作-linux linux动态库.so基础知识制作 在linux下制作动态库*.so。 1、linux下动态库的制作//so_test.h#include "stdio.h"void test_a();void test_b();void test_c(); //test_a.c#include "so_test.h"vo

2016-06-15 15:00:49 526

转载 linux flock

转载请说明出处:http://blog.csdn.net/cywosp/article/details/300830151. 场景概述    在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图:                                     图中所示的是两

2016-06-07 15:46:02 3367

转载 poll()

struct pollfd2010年04月15日 星期四 下午 03:59int poll (struct pollfd *fds, size_t nfds , int timeout);struct pollfd {int fd;        /* 文件描述符 */short events; /* 等待的事件 */short revents; /* 实际发生

2016-05-11 10:59:07 270

转载 netlink socket

Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火

2016-05-09 10:57:54 477

转载 select与阻塞和非阻塞

这2天一直和同事在讨论socket的非阻塞用在什么场合,并且认为在select时,使用的socket要设置成阻塞的,今天在网上搜了一下,才发现,原来,我们搞错了,一个套接字阻塞或者不阻塞,select就在那里,它可以针对这2种套接字使用,对任何一种套接字的轮询检测,超时时间都是有效的,区别就在于:当select完毕,认为该套接字可读时,1 .阻塞的套接字,会让read阻塞,直到读到

2016-03-25 10:57:28 649

转载 Strlcpy和strlcat

英文原文: http://www.gratisoft.us/todd/papers/strlcpy.html 英文作者: Todd C. Miller, Theo de Raadt译者:林海枫译本地址:http://blog.csdn.net/linyt/archive/2009/07/27/4383328.aspx注:本译文版权由译者所拥有,欢迎转载,但请

2016-03-25 09:38:33 670

转载 linux机制与策略

机制mechanism,策略policy。如果你看过《linux device drivers》,里面给出了大概的介绍。机制提供了干什么(do what),策略提供如何做(how to do)。驱动程序完成机制的功能,把策略的实现留给用户的应用程序。       通常在机制中,驱动程序要完成打开,关闭,读写,控制等功能。这些都是设备使用时最基本的操作。而策略中就要实现一些高级的数据处理或界

2016-02-01 10:38:39 1853

转载 regmap简介

1 简介Regmap 机制是在 Linux 3.1 加入进来的特性。主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器。其实这就是内核做的一次重构。Regmap 除了能做到统一的 I/O 接口,还可以在驱动和硬件 IC 之间做一层缓存,从而能减少底层 I/O 的操作次数。2 使用对比在了解 Regmap 的实现细节前,我们先来对比一下,传统操作寄存

2016-01-26 15:54:28 5567

转载 Java 环境下使用 AES 加密的特殊问题处理

在 Java 环境下使用 AES 加密,在密钥长度和字节填充方面有一些比较特殊的处理。1. 密钥长度问题    默认 Java 中仅支持 128 位密钥,当使用 256 位密钥的时候,会报告密钥长度错误Invalid AES key length   你需要下载一个支持更长密钥的包。这个包叫做 Java Cryptography Extension (JCE) Unlimi

2016-01-21 13:38:31 643

转载 C语言MD5实现

转载使用DEV-C++调试验证正常注:以下是md5加密算法c语言版,加密后16,32位版------------------------------------------------------------------------------------------------------网上找到的md5函数的实现,试过,可以用,稍微修改了,支持输出16和32

2016-01-19 13:14:34 667

转载 小printf大作用(用日志打印的方式调试程序)

转载自蜗窝科技,www.wowotech.net。前言       一般来说,初学编程者所写的第一个程序,就是使用printf打印“Hello world”。其实printf的功效远不只这些,在程序调试方面,printf也有非常大的用处。       “蜗蜗”在接触Linux driver开发之前,学习过桌面程序开发(如Turbo C、Visual C等),也从事了一段时间的嵌

2016-01-07 15:32:52 585

转载 宏定义中#和##符号的使用和宏定义展开

有一道经典的C语言问题,关于宏定义中#和##符号的使用和宏定义展开问题 程序如下:#include #define f(a,b) a##b#define g(a)  #a#define h(a) g(a) int main(){        printf("%s\n", h(f(1,2)));        printf("%s\n", g(f(1,2

2015-12-25 20:24:48 473

转载 LDR ADR

LDR 是ARM中的指令,也是伪指令。当用 LDR r, =imd  // r 为寄存器, imd为立即数LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加载这个内存单

2015-12-20 20:20:52 434

转载 uboot system.map

背景:正在努力看u-boot代码,已经研究了两三天,内容太多,一时难理清头绪。不过有一定的linux基础,也懂点gnu扩展,elf格式,连接器还没有深入研究。Linux编译内核后会生成System.map,u-boot编译后也生成System.map——还有u-boot.map,后者比前者多一些内容。.map文件格式为:地址     类型     符号比如u-boot生成的Syst

2015-12-20 17:36:56 1003

转载 ARM汇编中B跳转指令和LDR跳转的区别

B跳转指令是代码位置无关的,经过汇编后会替换为当前PC值加(减)一个修正值,不管这条指令是在哪一个地址执行,都能跳转到指定的位置。B只能在当前PC的32M范围内跳转,LDR只能在当前PC的4KB(0xfff范围)跳转。LDRPC,=xxx指令将向PC直接装载一个标号xxx的值,但标号经过编译后将被替换为一个与RO相对应的值,这样无论指令在何处执行都能跳转到一个指定的位置。以AT91SAM9260的

2015-12-17 13:06:28 1319

转载 linux内核的三种调度方法

1,SCHED_OTHER 分时调度策略,2,SCHED_FIFO实时调度策略,先到先服务3,SCHED_RR实时调度策略,时间片轮转  实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。SHCED_RR和

2015-12-16 21:06:45 561

转载 什么是真正的实时操作系统

什么是真正的实时操作系统做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks。实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂。毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platform Team封装好的API。所以,在此总结一下这

2015-12-16 21:03:24 2579

转载 Linux操作系统实时性

一、实时系统基本概念什么是实时系统,POSIX作了这样的定义:指能够在限定的响应时间内提供所需水平服务的系统。另个一被Donald Gillies提出定义为:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。实时系统对响应时间有严格要求。实时操作系统(RTOS,RealTime Operation Syste

2015-12-16 16:52:08 1036

转载 uboot makefile分析

U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。u-boot源码结构    解压就可

2015-12-15 20:35:17 339

转载 uboot mmc 命令

mmc read addr blk# cntmmc write addr blk# cntmmc erase blk# cntmmc rescanmmc part - lists available partition on current mmc devicemmc dev [dev] [part] - show or set current mmc device [part

2015-12-15 16:54:51 496

转载 Weak Alias

Weak Alias 跟 Weak Reference 完全没有任何关系,不过是我在看到 Weak Reference的时候想到的而已。Weak Alias 是 gcc扩展里的东西,实际上是函数的属性。这个东西在库的实现里面可能会经常用到,比如 glibc 里面就用了不少。抄录一段gcc 手册里面的话解释下函数属性是干啥的,In GNU C, you declare certain t

2015-12-15 16:03:13 246

转载 .balignl 16,0xdeadbeef

.balignl 16,0xdeadbeef      0xdeadbeef,是个单词组,首先要弄明白.balignl的意思,这个其实应该算是一个伪操作符,是编译器来实现其功能的。.balignl是.balign的变体,.balign是意思是,在以当前地址开始,地址计数器必须是以第一个参数为整数倍的地址为尾,在前面记录一个字节长度的信息,信息内容为第二个参数。.balign 8, 0xde

2015-12-14 20:57:14 362

转载 linux socket编程

转载自:作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接).“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间

2015-12-01 16:41:16 310

转载 source insight 多行注释

source insight 添加多行注释,取消多行注释快捷键把下方的代码加入到base项目中。macro Comment_gg(){ //用杠杠注释,不选中多行的话,注释当前行 hwnd = GetCurrentWnd() selection = GetWndSel( hwnd ) lnFirst = GetWndSelLnFirst( hwnd ) lnLa

2015-11-27 10:10:43 608

转载 linux命令行设置时间

在ubuntu12.04系统上使用系统设置无法更改时间,不知到怎么回事,干脆通过命令行修改。轻松解决问题。1、man手册1.1、调用格式  date [选项] ... [+格式]  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 1.2、功能    按格式显示时间或设置系统时间。 1.3、选

2015-11-13 14:53:56 1712

linux shell学习

辛辛苦苦整理的shell脚本学习教程,够用了

2015-03-27

空空如也

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

TA关注的人

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