Linux软件系列之六——链接文件

1.linux看起来像是一个分区,实际上不是。

2.向一个单元中存入数据的时候,如果存入的数据溢出的话,那么单元里存储的是这个数据的低几位。例如:char test= 10000;那么存入的值是16。因为10000的十六进制值为0x2710,取最低的一个字节,存入a单元中的就是0x10,即16

3.针对溢出的问题,赋值的时候最好采用十六进制形式,这样可以保证赋的值不会超过单元能够存储的值的范围。

4.在调试代码的时候,可以在代码中加入

#if 需要执行的语句 #elif 需要执行的语句#endif 或者

#if 需要执行的语句 #else 需要执行的语句#endif

从而选择哪些语句被编译器编译。

5.一个代码写完之后要经过以下四步才能得到可执行文件:预处理,编译,汇编,链接。

6.linux中,如果程序跑飞了,可以用ctrl+c的组合键来强制退出程序的执行。

7.两种死循环的写法:for(;;);和while1);

错误写法:while();

8.如果main函数调用了另一个函数,而另一个函数放在其他的c文件中,那么需要用如下的编译命令:gcc test1.c test2.c –o test

9.通常所说的32位机是指的是寻址空间的大小。

10.小端存储:将高位存放在高地址空间内;大端存储:将高位存放在低地址空间内。

11.malloc分配空间之后,需要检查分配的空间地址是否为空。如果将分配的空间使用free释放掉之后,p的指向仍然是以前分配的空间,为了安全,最好将p赋值为空。

12.malloc分配空间不成功时会有提示,然而用数组定义来分配空间时不成功的话也不会有提示信息,从而可能导致操作错误。

13.printf(“%d”,sizeof2));输出的结果是机器的字长,也就是int型的大小。

14.用指针操作结构体的成员的时候,可以使用.运算符和->运算符,但是推荐使用->运算符,因为其执行速度更快。

15.结构体的内存对齐:结构体在内存中所占用的大小并不是简单的将结构体中的数据大小叠加得到的,而是有着一套内存对齐规则,这样是为了方便CPU的操作。32位机的对齐原则:通常情况下按照4字节对齐,如果没有超过4字节的数据类型如double等,那么按照结构体中最大的数据类型对齐。

例如:shortchar则按照2字节对齐;shortcharint则按照4字节对齐;shortdoulbe按照4字节对齐。

16.在用typedef为结构体重命名的时候,假如新的结构体被命名为student,那么在这个结构体里面不能包含有student*next这种结构,因为这个时候student系统还不知道其是什么类型。

17.linux的几种文件:

普通文件:如c文件;

目录文件:如文件夹;

链接文件:类似于快捷方式;

管道文件:实现两个进程之间的通信;

设备文件:显示器,键盘等。

18.软链接和硬链接

软链接:类似于快捷方式,在block分区有一个真正的内容

硬链接:inode+1运算,并没有创建一个新的文件。硬链接(hardlink,也称链接)就是一个文件的一个或多个文件名。

注释:linux中硬盘会总体上划分为blockinode两个分区。在block分区中保存文件的内容,inode(缩影节点)中会有一个文件内容的缩影,保存文件的属性等。软链接可以跨越文件系统,而硬链接不行。

19.umask –S(大写):查看当前系统文件权限掩码。当使用open函数创建文件时,在函数中提供的权限会与系统权限做与运算,所以并不是在使用open函数时设定的是什么权限完成之后就会使什么权限。

20.在向打开的文件中写入数据的时候,如果将’\0’这个字符写入到文件中,那么可以正确的写入,但是gedit软件无法打开这个文件查看写入的内容,原因是’\0’字符不能够转换wiegedit能够查看的UIF-8编码。如果一定要向文件中写入’\0’字符,那么可以使用cat a.c来查看文件中的内容。

21.不带缓存的文件操作,在没有执行close函数时文件的内容已经被改写。

22.ls –laia表示查看所有文件,i表示查看索引节点文件。

系统调用结构:上层的printf等函数调用下层的readwrite等函数。fprintf会受到文件指针的影响,fgets函数只保存num-1个字符,多余的不接收,并会在末尾加一个’\0’perror函数首先打印字符串,然后再输出错误的原因。sprintf不能输出到stdoutsscanf不能用stdin替换。

23.scanf的匹配:result =scanf("aa%d", &a);如果输入的匹配不上,那么返回值为0,如果匹配上返回值为成功匹配的格式说明符的个数。本例的代码如果输入aa1,那么返回的值就是1,因为函数只匹配上了一个%d格式说明符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值