2014-12-26 - Linux的文件操作有两种方式: ①Linux系统调用方式,这种方式依赖于Linux系统 ②C语言的文件操作,采用C语言的库函数实现。 以下是Linux系统调用方式: 1. 创建文件 int creat(const char *filename, mode_t mode) filename:要创建的文件名,包含路径,缺省...
2014-12-25 - /*Our own header, to be included after all standard system headers*/ #ifndef __ourhdr_h #define __ourhdr_h #include errno.h/*for definition of errno */ #include stdarg.h/*ANSI C header file*/ #include sys/types.h /* required for some of ou...
2014-12-24 - Linux下Gtkmm枚举目录中所有文件(包含子目录),使用glibmm库. #include gtkmm.h #include glibmm.h #include giomm.h #include iostream #include string #include vector using namespace Gtk; using namespace Glib; using namespace std; void EnumDir(str...
2014-12-24 - 研究Linux分页技术碰到著名的局部性原理,查资料解释如下: 局部性原理(Principle of Locality)是一个由经验得出的结论:一个程序90%的时间运行在10%的代码上。 计算机程序从时间和空间都表现出局部性: 1)时间的局部性(Temporal Locality):最近被访问...
2014-12-22 - ### 每5秒显示日志最后10行的命令 ### 1、创建别名 echo alias rtlog=while true;do tail -10 /users/RtService/log.log sleep 5;done /etc/profile echo alias feplog=while true;do tail -10 /users/FepAdapter/log.log sleep 5;done /etc/profile ### 2、...
2014-12-22 - 刚从vxworks或其他rtos转到linux的朋友一定对linux下涉及到硬件的操作很不适应,因为在linux的体系结构中不允许应用层直接对物理地址进行访问,应用看到的都是进程内经过映射的虚拟地址。所以一般的做法是只要涉及到硬件的操作都是设计一个相应的driver,随...
2014-12-21 - 编写Linux应用程序要用到如下工具: (1)编译器:GCC GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]。 我们应该使用linux-gcc。 (2)调试器:GDB gdb是一个用来调试C和C++程序的强力调试器,我们能...
2014-12-21 - options.c_cc[VTIME] = 0; /* 设置超时0 seconds*/ options.c_cc[VMIN] = 13; /* define the minimum bytes data to be readed*/ 这两句话决定了对串口读取的函数read()的一些功能。我将着重介绍一下他们对read()函数的影响。 其中cc_t c_line只有在一些特殊...
2014-12-21 - 在Linux/Unix中,一般在屏幕上面看到的信息是从stdout (standard output) 或者 stderr (standard error output) 来的。许多人会问,output 就是 output,送到屏幕上不就得了,为什到还要分成stdout 和 stderr 呢?那是因为通常在 server 的工作环境下,几乎...
2014-12-20 - 这次搭建的平台是通过网络方式起动flash的,所以要分两大步来完成。1、linux网络环境的安装与配置;2、开发板flash的烧录与配置。 1、linux网络环境的安装与配置 安装samba实现linux与windows的文件共享,操作如下: samba安装命令: sudo apt-get install s...
2014-12-20 - 很久很久以前:一个叫做Mark Hemment的哥儿们写了Slab。在接下来的一些年里,其他人对Slab进行了完善。一年半以前,SLOB问世了。SLOB的目标是针对嵌入式系统的,主要是适用于那些内存非常有限的系统,比如32MB以下的内存,它不太注重large smp系统,虽然最近...
2014-12-20 - 硬件平台:FL2440 主机平台:Ubuntu 11.04 交叉编译器:arm-linux-gcc 4.3.2 本来是想移植最新的内核2.6.39但是总是在编译快完成的时候报错,有人说是新的内核对arm平台的支持不好,所以就降低了一下版本,这里移植2.6.35.4内核。 一、准备工作 1、下载解压...
2014-12-19 - 一般情况下,嵌入式Linux的开发都需要经过以下过程: 01. 建立开发环境 02. 配置开发主机 03. 建立引导装载程序Bootloader 04. 下载已经一直好的Linux操作系统 05. 建立根文件系统 06. 建立应用程序的Flash磁盘分区 07. 开发应用程序 08. 固化内核、根文件系...
2014-12-19 - 工欲善其事,必先利其器,oprofile是分析性能的利器。废话少说,直接上solution: 首先确定你的内核是否添加了对oprofile 的支持,方法是看内核的启动信息,如果有如下两行的,说明你的内核支持oprofile: oprofile: hardware counters not available oprofile...
2014-12-19 - 一个高效的开发环境包括一个版本控制工具和一个具有代码定义跳转和代码自动提示补全功能的编辑器。不可否认,在Windows下开发是幸福的,CVS/VS/VA构成一个功能完备强大的开发工具组合,更重要的是安装方便。而在Linux下就要自己动手了。下面三个组件分别提供...
2014-12-19 - 工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚...
2014-12-19 - 01. 下载源文件和补丁,包括: Linux内核源码及相应的补丁 binutils gcc glibc glibc-linuxthreads 这里可以尝试选择更新的版本。编译无法通过时,以此使用较旧的版本。几十发现新版本组合能够编译成功,仍然需要测试建立的工具链是否可以使用。 02. 建立工...
2014-12-19 - 1. 获取脚本当前路径: FILE_DIR=`echo $(cd $(dirname $0); pwd)` 2. shell整数计算可用expr,非整数计算可用awk内置函数实现: 四舍五入: awk BEGIN{printf(%d, 1.7+0.5)} 保留小数: awk BEGIN{printf %.2f\n, 2/3} 3. (()) while read line do ((lineNu...
2014-12-18 - 很多人会问,Android平台可以不使用Java开发应用程序? 我做Android平台native开发之前,也有这么想过,但是我又想,底层系统全是c/c++代码,用c/c++开发Android平台程序是可能的,只是需要使用系统非公开的API(就是android源代码,而非NDK里面提供的头文件)...
2014-12-18 - 1. sh n test.sh :测试脚本的语法错误 sh x test.sh /set x :跟踪所有命令行 sh e tesh.sh /set e :如果一个命令失败就立即退出 2.debug=1 test $debug gt 0 echo this is a debug info. 3. trap command signal EXIT 从一个函数中退出或整个脚本执行完毕 ER...
2014-12-18 - 为了方便自己查看CentOS上的各用户cpu和内存的使用比例,写了shell脚本。 viewUsage.sh #!/bin/bash # # view the cpu and memory consumption of each user at the current time. # chenqy 20101126 v0.9 # chenqy 20110115 v1.0 : #added the sort option:...
2014-12-18 - 调用系统函数opendir()和readdir来实现遍历Linux/Unix下的某个指定目录下的所有文件,并输出文件名。 实现代码如下: /* Author: ACb0y FileName: main.cpp Create Time: 2011年8月1日0:41:18 Version: V1.0 */ #include iostream #include apue.h #include...
2014-12-18 - 1.获得boost 下载boost_1_46_1.tar.bz2:http://sourceforge.net/projects/boost/files/ 解压 2.boost分布 boost_1_46_1.........................boost根目录 boost/.....................................所有boost头文件 libs/.............................
2014-12-18 - Linux对file和directory的控制,是通过RWX这种控制符来控制的。简要分析下RWX对应的数字符号含义: 1.RWX,把每一位R,W,X简单看成是R_,W_,X_的一种排列组合,这一位有权限,那么就是1,否则就是0。简单说来就是000,001,010,011,111,110,111这类组合。 2.那么...
2014-12-18 - 所谓消息队列就是指一个消息链表。 int msgget(key_t, int flag):创建和打开队列 int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int flag):发送消息,msgid是消息队列的id,msgp是消息内容所在的缓冲区,msgsz是消息的大小,msgflg是标志。 in...
2014-12-18 - 引子:首先实现了可加载的内核模块,通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册。这里讨论一下将内核模块直接编译进内核的过程。 其实很简单 第一步:将源文件代码 mytimer.c(不知道这么说规范不,反正就是 .c 文件)拷到Linux源代码目录...
2014-12-17 - 一、什么是ioctl。 ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, ); 其中fd就是用户程序打开设备时...
2014-12-17 - 本文结合大量实例阐述如何编写一个shell脚本。 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,...
2014-12-17 - linux中的变量 变量的分类: 本地变量:只对当前用户的shell有用 声明方法:变量名(大写)= xxxxx 或 xxxxx 环境变量:对当前用户写的shell和子shell都有效 声明方法:export 变量名(大写)= xxxxx 或 xxxxx 查看环境变量: [root@www tmp]# export DISPLA...
2014-12-17 - 这星期讲了关于Linux内核的编译和Linux的内核模块,浅显易懂,所以写出来和大家一起分享学习成果。首先说明,这只是简单的编译,和手动添加模块,而这篇主要介绍linux的内核分类,和linux内核相关的两个文件夹/proc/sys 这是实现内核编译和添加内核模块的理...
2014-12-17 - 资源共享是UNIX多用户系统的一个重要特征,信号量(SEMAPHORE)则是防止两个或多个进程同时访问共享资源的一种机制。在信号量机制实现之前,通常采用加锁文件的方法,其算法描述如下: ⑴加锁算法 int lock(lockfile) /*返回值0代表成功,其它为失败*/ char *lo...
2014-12-17 - 前面我写了如何通过宿主RedHat系统通过精简和调用以及修改的方式,打造一个完全属于自己的微型LInux! 但是,很多人懒啊~~,所以我又写了写脚本,通过分步实现的方式。达到用一个脚本,完全的按照用户想要达到的目的安装一个属于自己的微型Linux。 那么下面...
2014-12-17 - 我们最终写好了一键制作Linux的脚本。这次真的是一键了,附带了常用的命令,以及欢迎界面,外加提示符等等。 明天加入网络模块,让其能够上网! 宿主机:RedHat Enterprise 5 (2.6.18) 目标机器:256内存,8G硬盘。 #!/bin/bash #: Title: All_Mini_Linux.sh...
2014-12-17 - Makefile中的预定义变量: CC,C语言编译器的名称,cc CPP, C语言预处理器的名称,$(CC) -E CXX, C++语言的编译器名称,g++ RM,删除文件程序的名称,rm -f CFLAGS, C语言编译器的编译选项,无默认值 CPPFLAGS,C语言预处理器的编译选项,无默认值 CXXFLAGS...
2014-12-17 - 只要看看 include/linux/init.h中的定义就清楚了: #define core_initcall(fn) __define_initcall(1,fn) #define postcore_initcall(fn) __define_initcall(2,fn) #define arch_initcall(fn) __define_initcall(3,fn) #define subsys_initcall(fn) __define_...
2014-12-17 - 流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场合的技术基...
2014-12-16 - 有关调试的好处我想大家都不言自明了。本文章摘自原文,但加入了原文中没有说明的一些细节内容。 我的系统环境是:Ubuntu 9.10 + eclipse-cpp-galileo-SR1-linux-gtk.tar.gz + QEMU 0.11.0 有关系统环境我要交代一下。因为在ubuntu下找不到eclipse cdt的源,...
2014-12-16 - 在看此文章之前,请先参考《利用busybox制作一个小巧的Linux系统》与《使用busybox做一个小巧的Linux操作系统》制作出一个initrd内存盘。 1. 首先编译内核,编译内核时注意要选中 kernel hacking kernel debugging compile the kernel with debug info kernel...
2014-12-16 - Linux并不把进程的树形结构导出给普通用户,然而在内核中,它却使用树形结构来管理进程。linux内核使用子进程退出,父进程收尸,父进程退出,子进程被过继这种方式来管理进程的死亡,然而却少了一种,那就是父进程不给子进程收尸的情况,这就是僵尸进程的原...
2014-12-16 - 一.总的来讲,操作系统只要能实现以下两点就可以了: 1.时间的假象和空间的假象 时间假象的作用是实现了多进程/多线程;空间假象的作用是实现了虚拟内存。无疑,这两点是现代操作系统的基石。 2.和硬件接口以及和用户态的接口 从硬件那里接收信息,这个用中...