嵌入式Linux中文站

最新发布

系统开发

C语言的数据类型及其对应变量

阅读(155)

声明,定义和初始化 声明 标识符iden是告诉编译器有这么一个变量var,具体var里是什么,你自己去看。声明只需要标识符的类型和标识符名字,C语言的任何标识符在使用前都需要声明,当然变量也不例外;如果标识符的定义代码在使用之前,那么定义的代码可以看作是声明,否则...

系统开发

表达式,语句,变量与宏的一些概念

阅读(196)

表达式 表达式 C语言中分为常量表达式,算术表达式,关系表达式,逻辑表达式,赋值表达式,逗号表达式和复合表达式etc。表达式可以分为左值和右值 左值(ell-value) 可以出现在赋值运算符的左边或者右边,变量就是一个左值表达式 右值(are-value) 只能出现在赋值运算符的...

系统开发

条件编译,头文件,静态库,共享库与多文件编程

阅读(213)

条件编译 条件编译即满足某些条件的时候编译某部分代码,常用于开发多个版本的程序,当满足条件A时,编译出免费版本的软件,当满足条件B时,编译除vip版本的软件,可以提高代码的复用率。条件编译使用预处理命令+宏定义来实现,更多宏命令参见 $vi tutu.c # ifdef VIP /...

系统开发

Linux目录操作

阅读(166)

mkdir() # include sys/stat.h # include sys/types.h int mkdir ( const char *pathname, mode_t mode) ; opendir()、fdopendir() //打开一个文件夹流,返回一个绑定了这个流的指针,成功返回一个指针,失败返回NULL设errno # include sys/types.h # include dirent.h ...

系统开发

Linux计时器

阅读(171)

Linux中, 系统为每个系统都维护了三种计时器,分别为: 真实计数器, 虚拟计时器以及实用计时器, 一般情况下都使用真实计时器 getitimer()/setitimer() //读取/设置内部计时器 # include sys/time.h int getitimer ( int which, struct itimerval *curr_value) ; int setit...

系统开发

Makefile内嵌函数

阅读(143)

subst字符串替换函数 $(subst from, to, text) ,把 text 中的 from 字符串替换成 to ,返回被替换过的字符串 SRC: = /mnt/ hgfs /share/ 123 DES: =$(subst /mnt,/root,$(SRC)) #ATTENTION:是,/root不是, /root all: @echo $(SRC) @echo $(DES) /mnt/ hgfs /share/ 123 ...

系统开发

Makefile变量

阅读(80)

自定义变量 = 是最基本的赋值,会把整个makefile展开之后再决定是多少 x =foo y =$(x)bar #y是asdbar,不是foobar x =asd := 是覆盖之前的值,和=不同,和赋值的位置有关 x=fooy:= $(x) bar #y是foobarx=asd ?= 是如果没有被赋值过就赋予等号后面的值,赋过了就不管了 += ...

系统开发

Makefile关键字

阅读(162)

@ makefile会把将要执行的命令行在命令执行前输出到屏幕上,使用 @ 可以避免显示出命令本身 若 @ echo 正在编译 则 $make 显示 正在编译 若 echo 正在编译 则 $make 显示: echo 正在编译正在编译 override 如果一个变量的值需要在编译选项中指定或由系统传入,那么makef...

系统开发

Makefile目标,伪目标,头文件自动依赖

阅读(187)

目标 即我们最终要生成的文件,make默认生成第一个目标,注意 makefile中 tab 和空格不是一回事,规则使用 tab 缩进,编辑器不要设置诸如将tab替换为空格之类的选项,目标的结构如下 目标:依赖1 依赖2 TAB 生成目标的规则 伪目标 无论如何也要执行的目标,需要使用 .PHO...

线程进程

Linux IPC Pipe

阅读(94)

mkfifo() //创建有名管道(FIFO special file),创建完了就像普通文件一样open(),再读写,成功返回0,失败返回-1设errno。VS$man 3 mkfifo # include sys/types.h # include sys/stat.h int mkfifo ( const char *pathname, mode_t mode) ; pathname :the FIFO special fi...

线程进程

Linux多进程编程

阅读(187)

进程的状态 Linux进程有7种基础状态(两种running算一种),除了traced都可以用 $ps 命令查看, $ps 可以查看的进程状态如下,更多进程状态信息参见Linux Process VS Thread VS LWP R running or runnable (on run queue) D uninterruptible sleep (usually IO) S interrupt...

线程进程

Linux 多线程信号量同步

阅读(95)

PV原子操作 P操作: 如果有可用的资源(信号量值0),则此操作所在的进程占用一个资源(此时信号量值减1,进入临界区代码); 如果没有可用的资源(信号量值=0),则此操作所在的进程被阻塞直到系统将资源分配给该进程(进入等待队列,一直等到资源轮到该进程)。 V操作: 如...

线程进程

Linux 多线程互斥量互斥

阅读(155)

同步 同一个进程中的多个线程共享所在进程的内存资源,当多个线程在同一时刻同时访问同一种共享资源时,需要相互协调,以避免出现数据的不一致和覆盖等问题,线程之间的协调和通信的就叫做线程的同步问题, 线程同步的思路: 让多个线程依次访问共享资源,而不是并行 互斥...

线程进程

Linux 多线程编程

阅读(128)

概念 原来指向main()的线程叫做主线程(main thread) 使用pthread_create()创建出来的线程,叫做子线程(child thread) 主/子线程只有在创建时才有区别, 创建完了就一视同仁, 都是一样的独立个体, 可以有交流、共享和私有, 但没有上下级, 这一点和多进程一样, 只有在创建...

线程进程

Linux IPC udp/ip socket 编程

阅读(79)

模型 # include unistd.h # include sys/types.h # include sys/socket.h # include netinet/in.h # include arpa/inet.h //服务器: socket() //创建socket struct sockaddr_in //准备通信地址 bind() //绑定socket和addr sendto()/recvfrom //进行通信 close() //关闭s...

线程进程

Linux IPC socket编程基础

阅读(157)

头文件 # include unistd.h # include sys/types.h # include sys/socket.h # include sys/un.h # include netinet/in.h # include string.h # include arpa/inet.h socket() //创建网络端点,返回socket文件描述符,失败返回-1设errno int socket ( int domain, int ty...