关于linux的execve调用过程[转]
时间:2006-02-24 来源:cellar
如果我们举一个a.ou为例子, ldd a.out看:[root@localhost ~]# ldd a.out linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/i686/libc.so.6 (0x00914000) /lib/ld-linux.so.2 (0x008f6000)
当某个进程execve() a.out时, 大体来说是:1, 陷入内核的execve系统调用;2, 内核负责加载a.out这个可执行文件3, 内核负责加载/lib/ld-linux.so.24, 从内核态返回到用户态, 并且, 强制性地迫使其返回到/lib/ld-linux.so.2的代码段中, 而不是a.out的代码段中5, ld-linux.so.2分析a.out文件, 搜索并加载需要的共享库6, ld-linux.so.2把控制权交付给a.out, a.out这才真正开始执行
相关阅读 更多 +