参考资料:http://baike.baidu.com/view/400319.htm
Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要 使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux所特 有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。下面我们展示一个最简单的多线程程序 example1.c
#include <stdio.h>
#include <pthread.h>
#include<sys/types.h>
void thread(void){
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
}
int main(void){
pthread_t id;
int i,ret;
ret = pthread_create(&id,NULL,(void*)thread,NULL);
if(ret!=0){
printf ("Create pthread error!\n");
// exit (1);
}
for(i=0;i<3;i++)
printf("This is the main process.\n");
pthread_join(id,NULL);
return (0);
}
我们编译此程序:
gcc example1.c -lpthread -o example1
......
1.管道
1.1普通管道
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
int main()
{
int pipe_fd[2];
pid_t pid;
char buf_r[100];
char *p_wbuf;
int r_num;
memset(buf_r, 0, sizeof(buf_r));
if(pipe(pipe_fd) < 0)
{
printf("pipe create error!\n");
return -1;
}
if((pid = fork()) == 0)
{
&n ......
第一章
1.
解释性语言:shell javascript python 编程人员不需要经过编译 连接的过程,可以在特定环境下直接执行的语言 自动编译连接。开发效率高,但运行效率低。
编译型语言:java c c++,需要经过编程人员经过编译和连接产生可执行程序的语言。运行效率高。
2.
数据
数据结构:数据之间的一种或多种关系。密切相关的是数据的类型和数据的存放。
程序设计:编写程序的过程。
软件:程序和文档。
3.
c语言是结构化的语言
就是说:整个程序是用函数串联起来实现的。功能分解,自顶向下,逐个分解。
第二章
1.
开发环境
编辑器 vi
编译器 gcc
调试器 gdb
函数库 glibc
系统头文件 glibc_header
2.
开发图形界面 图形库
gnome 一般是用c
kde 一般使用c++
3.
IDE 集成开发环境
kylix 号称linux下的dephi
kdevelop
RHIDE 类似与turbo c++
4.gcc
-o 指定可执行文件名
-c 只输出编译结果 不链接,不生成可执行文件
-g 表示在编译时提供以后进行调试的信息
5.glibc 提供系统调用和基本函数的c库
两种安装方式
安装成测试用的函数库
安装成主要c函数库(默认)
几个附 ......
第一章
1.
解释性语言:shell javascript python 编程人员不需要经过编译 连接的过程,可以在特定环境下直接执行的语言 自动编译连接。开发效率高,但运行效率低。
编译型语言:java c c++,需要经过编程人员经过编译和连接产生可执行程序的语言。运行效率高。
2.
数据
数据结构:数据之间的一种或多种关系。密切相关的是数据的类型和数据的存放。
程序设计:编写程序的过程。
软件:程序和文档。
3.
c语言是结构化的语言
就是说:整个程序是用函数串联起来实现的。功能分解,自顶向下,逐个分解。
第二章
1.
开发环境
编辑器 vi
编译器 gcc
调试器 gdb
函数库 glibc
系统头文件 glibc_header
2.
开发图形界面 图形库
gnome 一般是用c
kde 一般使用c++
3.
IDE 集成开发环境
kylix 号称linux下的dephi
kdevelop
RHIDE 类似与turbo c++
4.gcc
-o 指定可执行文件名
-c 只输出编译结果 不链接,不生成可执行文件
-g 表示在编译时提供以后进行调试的信息
5.glibc 提供系统调用和基本函数的c库
两种安装方式
安装成测试用的函数库
安装成主要c函数库(默认)
几个附 ......
尽管不愿意过分声张,但联想确实在重回Linux的老路。11月12日,高通CEO Paul Jacobs透露了联想一款基于ARM架构
Snapdragon处理器的智能本产品,这种产品的定位介于智能手机与上网本之间。Jacobs还宣称这款基于Linux的智能本将于明年1月份召开的
CES计算机电子展会上正式露面,而联想随后也对这则消息进行了确认,不过他们并不愿意透露更多有关的产品细节。
不过据高通方面传来的信息,这款智能本将以上网本的外形和内部功能设置为基础,并加入3G/GPS等功能。较高规格的产品将采用1GHz
Snapdragon处理器,并支持720p准高清视频播放功能,并具备GPS定位功能,电池续航能力则可达8-10小时。另外产品还支持
AT&T的3G无线网络,802.11个/n
WiFi。产品将由AT&T公司进行销售(很可能会采取绑定3G套餐的方式供货)。但AT&T对此则三缄其口。
据Jacobs展示的这款机型的Linux画面显示,其界面较为简洁并以应用为基础进行设计。而由于Snapdragon具备谷歌Android的支持能力,加上后者又有对3G智能手机应用做过一定的优化,因此我们猜测联想的智能本很可能会使用这款操作系统。
历
史上看,联想与Linxu之间的关系显得错综复杂,时冷时热.当年联想的Thin ......
参考:
http://longer.spaces.eepw.com.cn/articles/article/item/60415
http://imganquan.org/blog/?p=350
网上找的,归纳一下:
杂项设备(misc device)
杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。在 Linux 内核的include\linux目录下有Miscdevice.h文件,要把自己定义的misc device从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10 ,一起归于misc device,其实misc_register就是用主标号10调用register_chrdev()的。
也就是说,misc设备其实也就是特殊的字符设备。
字符设备(char device)
使用register_chrdev(LED_MAJOR,DEVICE_NAME,&dev_fops)注册字符设备驱动程序时,如果有多个设备使用该函数注册驱动程序,LED_MAJOR不能相同,否则几个设备都无法注册(我已验证)。如果模块使用该方式注册并且 LED_MAJOR为0(自动分配主设备号 ),使用insmod命令加载模块时会在终端显示分配的主设备号和次设备号,在/dev目录下建立该节点,比如设备leds,如果加载该模块时分配的主设备号和次设备号为253和0,则建立节点:mknod leds c 253 0。使用register_chrdev (LED_MAJOR,DEVICE_NAME,&dev_fops) ......
转贴自: http://hi.baidu.com/harrybobo/blog/item/ae3347b51711afc637d3ca69.html
一、为什么要使用库文件
我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,
实现代码也相同,也是我们所说的重复代码。比如,很多项目里都有一个用户验证的功能。
代码段如下:
//UserLogin.h文件,提供函数声明
int IsValidUser(char* username, int namelen);
//UserLogin.c文件,实现对用户信息的验证
int IsValidUser(char* username, int namelen)
{
int IsValid = 0;
/*下面是具体的处理代码,略去*/
return IsValid
}
如果每个项目都保存着这两个UserLogin.h和UserLogin.c文件,会有以下几个弊端:
1、每个项目里都有重复的模块,造成代码重复。
2、代码的重用性不好,一旦IsValidUser的代码发生了变化,为了保持设计的一致性,我们还要手工修改其他项目里的UserLogin.c文件,既费时又费力,还容易出错。
库文件就是对公共代码的一种组织形式。
为了解决上面两个弊端,就提出了用库文件存放公共代码的解决方案,其要点就是把公共的(也就是可以 ......