01 2013 档案
摘要:如果用这个类型名来定义变量,可以这样写:struct complex_struct { double x, y;} z1, z2;这样z1和z2就是两个变量名,变量定义后面带个;号是我们早就习惯的。但即使像上面那样只定义了complex_struct这个Tag而不定义变量,后面的;号也不能少。这点一定要注意,结构体定义后面少;号是初学者很常犯的错误。不管是用上面两种形式的哪一种形式定义了complex_struct这个Tag,以后都可以直接用struct complex_struct来代替类型名了。例如可以这样定义另外两个复数变量:struct complex_struct z3...
阅读全文
摘要:头文件<setjmp.h>中的声明提供了一种不同于通常的函数调用和返回顺序的方式,特别是,它允许立即从一个深层嵌套的函数调用中返回。 int setjmp(jmp_buf env) setjmp 宏将状态信息保存到 env 中,供 longjmp 使用。如果直接调用 setjmp,则返回值为 0;如果是在longjmp 中调用 setjmp,则返回值为非 0。setjmp 只是用于某些上下文中,如用于 if 语句,switch 语句、循环语句的条件测试中及一些简单的关系表达式中。例如: if(setjmp(env) == 0) /* 直接调用 setjmp 时,转移到这里 */ e
阅读全文
摘要:#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(void){pid_t pid;if((pid=fork())==-1) { printf("error"); }else if(pid==0){printf("ok\n");exit(0);}else{printf("parent process,output begin\n");printf("hello word");_exit(0);}}调试后
阅读全文
摘要:我们在程序中使用的变量和函数都有各自的地址,程序被编译后,这些地址就成了指令中的地址,指令中的地址被CPU解释执行,就成了CPU执行单元发出的内存地址,所以在启用MMU的情况下,程序中使用的地址都是虚拟地址。一个操作系统中同时运行着很多进程,通常桌面上的每个窗口都是一个进程,Shell是一个进程,在Shell下敲命令运行的程序又是一个新的进程,此外还有很多系统服务和后台进程在默默无闻地工作着。由于有了虚拟内存管理机制,各进程不必担心自己使用的地址范围会不会和别的进程冲突,比如两个进程都使用了虚拟地址0x08048000,操作系统可以设置MMU的映射项把它们映射到不同的物理地址,它们通过同样的虚
阅读全文
摘要:访问设备还有一点和访问内存不同。内存只是保存数据而不会产生新的数据,如果CPU不去读它,它也不需要主动提供数据给CPU,所以内存总是被动地等待被读或被写。而设备往往会自己产生数据,并且需要主动通知CPU来读这些数据,例如敲键盘产生一个输入字符,用户希望计算机马上响应自己的输入,这就要求键盘设备主动通知CPU来读这个字符并做相应处理,给用户响应。这是由中断(Interrupt)机制实现的,每个设备都有一条中断线,通过中断控制器连接到CPU,当设备需要主动通知CPU时就引发一个中断信号,CPU正在执行的指令将被打断,程序计数器会设置成某个固定的地址(这个地址由体系结构定义),于是CPU从这个地址开
阅读全文
摘要:内存与地址我们都见过像这样挂在墙上的很多个邮箱,每个邮箱有一个房间编号。邮箱的地址使用时根据房间编号找到相应的邮箱,然后投入信件或取出信件。内存与此类似,每个存储单元有一个地址(Address),CPU通过地址找到相应的存储单元,取其中的指令,或者读写其中的数据。与邮箱不同的是,一个地址所对应的存储单元不能存很多东西,只能存一个字节,所以以前讲过的int、float等多字节的数据类型保存在内存中要占用多个地址,这种情况下把起始地址当作这个数据的地址。内存地址是从0开始编号的整数,最大编到多少取决于CPU的地址空间(Address Space)有多大。目前主流的处理器是32位或64位的,本书主要
阅读全文
摘要:#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="i love you!";uchar code table1[]="WWW.TXMCU.COM";sbit lcdrw=P1^6;sbit lcdrs=P1^7;sbit dula=P3^6;sbit wela=P3^7;sbit lcden=P2^4;void delay_ms(uint);void write_date (uint);void write_com
阅读全文
摘要:Find是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录.主要选项:-name 按照文件名查找文件-perm 按照文件权限来查找文件-prune 不在当前指定的目录中查找-user 按照文件属主来查找文件-group 按照文件所属的组来查找文件-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前.-nogroup 查找无有效所属组的文件,即该文件所属的组不存在-nouser 查找无有效属主的文件-newer file1 ! file2 查找更改时间比文件file1新但比文件f...
阅读全文

浙公网安备 33010602011771号