摘要: 一.使用文件描述符,根据fd读写 fd:file descriptorint fd = open("a.txt",0); //返回的是代表文件的文件描述符char buf[1];while(1){ size_t cout = read(fd,buf,1); //返回的是读取的字符数 if(count==0) break; printf(buf); }close(fd); //关闭由该文件描述符代表的那个文件文件描述符是整数,从0开始递增。其中0表示标准输入,即键盘输入,1表示标准输出,2表示标准错误输出所以下面这一句表示从标准输入... 阅读全文
posted @ 2013-09-28 18:35 亘大 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 有个结构体是介样的:struct A{ int n; int m; char c;}int n 和 int m 是四个字节,char c 是一个字节,但sizeof(A)是12个字节。解释:因为在32位机器中,一个指令周期主线(?)传递32个信号(有32根和cpu相连的线的原因),可以表示4个字节大小的数据,当传递的数据不够4个字节的时候,会补齐,这就是对齐,所以A中的char类型被补到4个字节,3个4字节加起来就有12个字节了。在传输文件的时候,会出现要传的文件大小小于接受到的文件大小,可能就是这个原因。 阅读全文
posted @ 2013-09-28 17:00 亘大 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 1.栈一般比较小,几十兆,但递归太多,局部变量太大栈会溢出2.例子int a[100];for(int i = 0;i<100;i++) a[i] = 99;print("%d-%d-%d-%d-%d");程序的输出结果是:0-0-0-99-99解释:前面三个0不知道为什么,后面的两个99是输出了数组a的两个元素,随着程序的运行,局部变量被放入栈中,执行到print时,格式字符串"%d-%d-%d-%d-%d"需要五个整数参数,从printf四个字节四个字节处往下找,在这次运行中,前三个参数在内存空间中刚好表示为0,第四和第五个参数找到了数组a中的 阅读全文
posted @ 2013-09-28 16:45 亘大 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 相当于被注释掉只声明没使用的代码。测试的时候要防止程序优化的干扰,解决的方法就是用一下那段代码的结果。 阅读全文
posted @ 2013-09-28 16:00 亘大 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 指针就是地址,是一个整数1.指向数组的指针int a[10];int *p = a;2.指针数组int *a[10];a没占用内存3.指向指针的指针int n = 77;int *p = &n;4.指向函数的指针函数是一些指令,放在内存中,所以指向函数的指针就是指向存放函数指令的内存 阅读全文
posted @ 2013-09-28 15:57 亘大 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 1.shell 接受输入,显示输出2.类似(不能说是类似?)的有csh,bash3.在bash中,cd不是一个可执行文件4.gcc a && b 先看a是不是内部命令,不是的话,找是不是可执行文件,找到的话,将可执行文件放入内存,执行a,a不出错(main()返回0),同样的过程处理b a||b a运行失败运行b 阅读全文
posted @ 2013-09-28 15:46 亘大 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 开机时,先运行BIOS(基本输入输出系统),检查键盘,内存,硬盘等有没有问题,接着讲操作系统的一些执行文件.exe放到内存,再跳到内存那里执行操作系统提供的功能:执行程序 硬件接口并发:一个cpu“同时”运行多个进程,这时多个进程不断切换 分时多任务并行:多个cpu同时运行多个进程 阅读全文
posted @ 2013-09-28 15:38 亘大 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 分两类:1.随机访问 读取内存,硬盘的时候,可以将要读取的那一块内存(硬盘)空间看作是数组。这是效率最高的一种方式 另:格式化硬盘分区或者U盘是有一个选项是“分配单元大小”。当单个文件小于这个单元大小的时候,硬盘或U盘仍会分配该单元大小的空间存储这个文件,所以当单元大于文件时,可能会出现文件的总大小没有一个分区或U盘大,但显示已经满了。2.流 Unix中万物都是流。提供流式访问接口的都可以看作文件。 阅读全文
posted @ 2013-09-28 15:24 亘大 阅读(177) 评论(0) 推荐(0) 编辑