- 博客(69)
- 资源 (3)
- 收藏
- 关注
转载 Linux串口编程
串口概述常见数据通信方式:并行通信,串行通信UART的主要操作: >数据发送及接受 >产生中断 >产生波特率 >Loopback模式 >红外模式 >自动流控模式串口参数的配置主要包括:波特率、数据位、停止位、流控协议。 linux中的串口设备文件放于/de/目录下,串口一,串口二分别为"/dev/ttyS0","/dev/ttyS
2012-06-30 09:54:24
941
3
转载 assert()函数用法总结
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badpt
2012-06-30 09:23:04
667
原创 第十二章 POSIX 线程(三)
用互斥量进行同步 另一种用在多线程程序中的同步访问方法是使用互斥量。它允许程序员锁住某个对象,使得每次只有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它。#include int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t
2012-01-04 21:57:02
718
转载 linux内核中Kconfig文档的作用
linux内核中Kconfig文档的作用2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成
2011-12-29 11:15:31
683
转载 Linux内核Makefile文件
=== 1 概述 === 2 角色分工 === 3 内核编译文件 --- 3.1 目标定义 --- 3.2 内嵌对象 - obj-y --- 3.3 可加载模块 - obj-m --- 3.4 导出符号 --- 3.5 库文件 - lib-y --- 3.6 目录递归
2011-12-29 11:11:52
257
原创 第十二章 POSIX 线程(二)
信号量 信号量是一个特殊类型的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作,即使在一个多线程程序中也是如此。这意味着若果一个程序中有两个(或更多)的线程试图改变一个信号量的值,系统将保证所有的操作都将依次进行。但如果是普通变量,来自同一程序中的不同线程的冲突操作导致的结果将是不确定的。 信号量--二进制信号量,它只有 0 和 1 两种取值。还有一种更通用
2011-12-27 19:38:03
681
原创 第十二章 POSIX 线程(一)
在一个程序中的多个执行线路就叫做线程(thread)。更准确的定义是:线程是一个进程内部的一个控制序列。 线程有一套完整的与其相关的函数库调用,它们中的绝大多数函数名都是以 pthread_ 开头,为了使用这些函数库调用,我们必须定义宏 _PEENTRANT,在程序中包含头文件 pthread.h ,并且在编译程序的时需要用选项 -lpthread 来链接线程库。pthr
2011-12-21 17:30:42
690
原创 第十一章 进程和信号(三)
一个健壮的信号接口 我们已经对用 signal 和其相关函数来生成和捕获信号做了比较深入的介绍,因为它们在传统的 Unix 编程中很常见。但 X/Open 与 Unix 规范推荐了一个更新和更健壮的信号编程接口:sigaction 。它的定义如下所示:#include int sigaction ( int sig, const struct sigaction *a
2011-12-21 14:57:49
771
原创 第十一章 进程和信号(二)
信号 信号是UNIX与Linux系统响应某些条件而产生的一个事件。接收到该信号的进程会相应地采取一些行动。我们用术语(raise)表示一个信号的产生,使用术语(catch)来表示接收到一个信号。信号是由于某些错误条件而生成的,如内存段冲突、浮点处理器错误或非法指令。他们由 shell 和终端处理器生成来引起中断,它们还可以作为在进程间传递消息或修改行为的一种方式,明确地由一个进
2011-12-20 17:30:07
1579
原创 第十一章 进程和信号(一)
我们可以通过调用fork来创建一个新进程。这个系统调用会复制当前进程,在进程表中创建一个实体,而且与当前进程具有相同的属性。新进程与原始进程几乎是相同的,执行相同的代码,但是具有其自己的数据空间,环境与文件描述符。#include
2011-12-08 18:42:39
789
转载 c语言中 static 用法
static在c里面可以用来修饰变量,也可以用来修饰函数。一、修饰变量变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。int a ;int main(){ int b ; int c* = (int *)malloc(sizeof(int));}a是全局变量,b是栈变量,c是堆变量。stat
2011-11-17 09:21:58
649
原创 指针与二维数组
一.、二维数组元素的地址 定义如下二维数组: int a[3][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; a为二维数组名,此数组有3行4列, 共12个元素。但也可这样来理解,数组a由三个元素组成:a[0], a[1], a[2]。而它们中每个元素又是一个一维数组, 且都含有4个元素
2011-11-01 10:37:28
4769
原创 c语言 continue break
#include int main(){ int i; while(1) { printf("ok0\n"); for (i = 0; i < 5; i++) { printf("ok1\n");
2011-09-22 17:36:39
845
原创 指针数组
一个一维指针数组的定义:int *ptr_arry[10] 指针数组中的每一个元素均为指针,即有诸形如 “ *ptr_arry[i] ” 的指针。 由于数组名本身也是一个指针,因此指针数组中的元素亦可以表示为 “ *( *(ptr_ar
2011-09-15 10:10:58
481
原创 基于UDP协议的网络程序
服务器#include #include #include #define MAXLINE 80 #define SERV_PORT 4101 int main(void) { struct sockaddr_in servaddr, cliadd
2011-08-10 11:17:31
537
原创 基于TCP协议的网络程序
服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返
2011-08-10 10:38:11
738
原创 Socket 编程
IPV4套接口地址结构以“sockaddr_in”命名sockaddr_in(在中定义):struct sockaddr_in {short int sin_family; /* Address family */unsigned short int sin_po
2011-08-10 10:29:31
530
转载 C语言内存分配
一、一个经过编译的 C/ C++ 的程序占用的内存分成以下几个部分:1 、栈区( stack ):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。2 、堆区( h
2011-08-09 09:02:44
846
原创 Linux 时间函数
时间类型:Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟悉的格林威治标准时间(Greenwich Mean Time, GMT)Calender Time:日历时间,是用一个标准时间点到此时经过的秒数来表示
2011-08-08 14:47:28
629
原创 access(判断是否具有存取文件的权限)
access(判断是否具有存取文件的权限)相关函数 stat,open,chmod,chown,setuid,setgid表头文件 #include定义函数 int access(const char * pathname,int mode);函数说明 acces
2011-08-08 11:34:43
8908
原创 strcpy strncpy (拷贝字符串)
<br /> <br />strcpy(拷贝字符串)<br />表头文件 #include<string.h><br />定义函数 char *strcpy(char *dest,const char *src);<br />函数说明 strcpy()会将参数src字符串拷贝至参数dest所指的地址。<br />返回值 返回参数dest的字符串起始地址。<br />附加说明 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或
2011-02-15 11:45:00
1585
原创 strtok(分割字符串)
<br /> <br />strtok(分割字符串)<br /> <br />表头文件 #include<string.h><br />定义函数 char * strtok(char *s,const char *delim);<br />函数说明 strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中 发现到参数delim的分割字符时则会将该字符改为/0 字符。在第一次调用时,strtok()必需
2011-02-14 11:54:00
1347
原创 getenv(取得环境变量内容)
<br />表头文件 #include<stdlib.h><br />定义函数 char * getenv(const char *name);<br />函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环<br /> 境变量的格式为name=value。<br />返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。<br />实例:<br />shell脚本 test.
2011-01-13 09:48:00
1891
原创 ubuntu 10.04下建立nfs启动文件系统
一安装nfs 前面的博客里有讲二 配置nfs yelei@ubuntu:~$ sudo dpkg-reconfigure portmap (对Should portmap be bound to the loopback address? 选N) yelei@ubuntu:~$ sudo gedit /etc/default/portmap (清除 "-i 127.0.0.1")三 配置hosts.deny yelei@ubuntu:~$ sudo gedit /etc
2010-10-02 15:39:00
1294
原创 ubuntu 10.04 usb转串口
<br />ubuntu 10.04下usb转串口设置<br /> <br />在安装好minicom后<br />1.插入usb转串口线,占到对应的串口<br />yelei@ubuntu:/media$ ls -l /dev/ttyUSB*<br />crw-rw---- 1 root dialout 188, 0 2010-10-02 14:04 /dev/ttyUSB0<br /> <br />2.配置<br />yelei@ubuntu:~$ sudo minicom -s<br />(1
2010-10-02 14:20:00
856
原创 LDD3学习笔记(一) --hello world模块
<br /> <br />Hello world 源程序<br />#include <linux/init.h>#include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world!/n"); return 0;}static void hello_exit(void){ printk
2010-09-27 22:13:00
1274
转载 配置文件/etc/inittab详解
二、运行initinit的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“###"开始的中注释为笔者增加的): # # inittab This file describes how the INIT process should set up #
2010-09-08 16:12:00
850
原创 getchar( )与putchar( )
<br />getchar()---由标准输入设备内读进一字符<br />表头文件 #include <stdio.h><br />定义函数 int getchar (void)<br />函数说明 getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回<br />返回值 getchar()会返回读取到的字符,若返回EOF则表示有错误发生<br />附加说明 getchar()非真正函数,而是gets(stdin)宏定义。<br /
2010-08-16 15:50:00
1015
原创 字符串输出函数 puts( ) fputs( ) printf( )
<br />C语言有三个勇于输出字符串的标准库函数 puts( ) fputs( ) printf( )<br />puts( )函数的使用很简单,只需要给出字符串参数的地址。注意,每一个字符串都单行显示,与printf()不同,puts()显示字符串时自动在其后添加一个换行符。<br /> /* put_out.c -- using puts() */#include <stdio.h>#define DEF "I am a #defined string."int main(void){
2010-08-16 15:34:00
2508
原创 字符串输入函数gets( ) fgets( ) scanf( )
<br />C库提供了三个读取字符串的函数:gets( ) fgets( ) scanf( )。<br />gets()---get string 从系统的标准输入设备(通常是键盘)获得一个字符串。因为字符串没有预定的长度,所以gets()需要知道输入何时结束。解决办法是在读字符串直到遇到一个换行符(/n),按回车键可以产生这个字符。它读取换行符之前(不包括换行符)的所有字符,在这些字符后加一个空字符(/0)。它会丢弃换行符。<br />定义函数 char *gets(char *s)<br />返
2010-08-16 15:22:00
5275
原创 字符串
字符串( character string )是以空字符(/0)结尾的char数组。字符串常量(string constant),是指位于一对双引号中的任何字符。双引号里德字符加上编译器自动提供的结束标志/0字符,作为一个字符串被存储在内存里。// strings.c -- stringing the user along#include #define MSG "You must have many talents. Tell me some."
2010-08-16 14:41:00
587
原创 条件运算符?:
<br /> expression1 ? expression2 : expression3<br /> <br /> 如果expression1为真(非零),整个条件表达式的值和expression2的值相同。如果expression1为假(零),整个条件表达式的值等于expression3的值。<br /> <br /> x = (y < 0) ? -y : y<br /> <br /> 如果y小于0,那么x=-y;否则,x=y。
2010-08-09 11:12:00
128
转载 [转]Android的源代码结构
Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:.|-- Makefile (全局的Makefile)|-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码)|-- bootloader (引导加载器)|-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)|-- dalv
2010-07-23 08:55:00
529
转载 C 语言 implicit declaration of function 错误原因
<br />关于 implicit declaration of function 一点经验之谈<br /><br />用gcc编译c程序的时候 经常会出现<br />implicit declaration of function '...' 的warning<br /><br />偶经过这几天的经验,发现主要有2种情况会产生这种warning<br /><br />1 没有把函数所在的c文件生成.o目标文件<br />2 在函数所在的c文件中定义了,但是没有在与之相关联的.h
2010-07-22 14:23:00
60282
转载 swap分区的知识
swap分区到底有什么用呢? Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 Swap的原理是一个较复杂的问题,需要大量的篇幅来说明。在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节。 众所周
2010-07-21 11:30:00
693
原创 ubuntu tftp服务器配置
1、安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd<br /> yelei@ubuntu: sudo apt-get install tftpd tftp xinetd 2、建立配置文件<br /> 在/etc/xinetd.d/下建立一个配置文件tftp<br /> yelei@ubuntu:/etc/xinetd.d$ sudo gedit tftp<br /> 在文件中输入
2010-07-20 18:00:00
977
原创 qq for ubuntu 10.04总是掉线
<br />用VI编辑器修改/usr/bin/qq,添加一个环境变量:<br /><br />命令:sudo vi /usr/bin/qq<br />会出现下面的文件:<br />#!/bin/sh<br />cd /usr/share/tencent/qq/<br />./qq<br /><br />我们要向其中添加:export GDK_NATIVE_WINDOWS=true<br /><br />修改后:<br /><br />#!/bi
2010-07-16 09:27:00
1283
原创 QT下应用程序开发
<br />一、应用程序的编辑与编译<br />从最简单也是最著名的Hello Word来学习QT。首先创建helloword.cpp<br /> # mkdir hello<br /># vi helloword.cpp<br /> #include <QApplication> <br />#include <QLabel> <br />int main(int argc, char *argv[]) <br />{ <br /> QApplicatio
2010-07-15 14:17:00
1056
原创 QT下触摸屏和键盘接口移植
一、触摸屏移植 1、安装及编译tslib 1.4 将tslib 1.4.tar.ba2复制到/home 目录下解压缩 # cd /home/tslib # ./autogen.sh # echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache # ./configure --prefix=/usr/local/tslib --host=arm-linux --cache-file=arm-linux.c
2010-07-15 14:12:00
3707
1
原创 qt-embedded-linux-opensource-src-4.5.2 交叉编译
交叉编译环境搭建1、交叉编译器和QT 版本交叉编译器版本 arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bzQT 版本 qt-embedded-linux-opensource-src-4.5.2.tar.bz22、交叉编译器的安装 # tar jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz –C /usr/local/arm1、 将QT 源码复制到/home目录下解压缩# tar
2010-07-15 10:08:00
2639
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人