关于fork的一道经典面试题
摘要:这是一道面试题,问程序最终输出几个“-”: 1 #include 2 #include 3 #include 4 int main() 5 { 6 int i; 7 for(i = 0; i 2 #include 3 #include 4 int main() 5 { 6 ...
阅读全文
posted @
2015-03-08 17:37
渊蓝之蓝
阅读(2156)
推荐(0) 编辑
linux硬链接和软链接的区别
摘要:1.原理上:硬链接(hard link):A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个...
阅读全文
posted @
2015-02-12 14:21
渊蓝之蓝
阅读(32314)
推荐(7) 编辑
自己动手学编译器的链接和加载(一)
摘要:最近学习链接器的链接和装载过程。首先说说一个程序从源代码到可执行文件的流程(以linux平台上c程序为例):第一步预编译过程的命令如下:gcc -E test.c -o test.i 或 cpp test.c > test.i由.c文件生成.i预处理文件第二步:gcc -S test.i -o test.s由.i生成.s汇编文件第三步:as test.s -o test.o 或gcc -c test.s -o test.o生成目标文件第四步:ld -static /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc/i686-linux-gnu/4.6
阅读全文
posted @
2012-05-19 16:33
渊蓝之蓝
阅读(699)
推荐(0) 编辑
一个很简单的例子,从汇编层次理解函数调用
摘要:虽然这种东西在书上网上很多,自己动手做一遍还是很有收获的。测试例子#include<stdio.h>int test_function(int a, int b){printf("hello world, %d,%d\n",a,b);}int main(){test_function(1,2);}main函数中:执行call后,eip的值进栈,存放的是从函数调用返回后继续执行的指令的地址(本例子中是leave指令,地址为0x08048424)test_function函数中:在函数序言部分,将ebp压栈,重置esp和ebp的值,建立test_function的栈
阅读全文
posted @
2012-01-12 16:15
渊蓝之蓝
阅读(1265)
推荐(0) 编辑