Mach-O是 OS X 系统的可实验文件,Mach-O有多种文件类型,比如MH_DYLIB文件、MH_BUNDLE文件、MH_EXECUTE文件,MH_OBJECT(内核加载)等。可实验文件离不开历程,在 Linux 中,我们会通过 Fork()来新创建子历程,然后实验镜像通过exec()来替换为另一个可实验步伐。在用户态会通过exec*系列函数来加载一个可实验文件。
int execvp(cosnt char *filename, char *const argv[]);
复制代码
通过分析我们发现,含有 l 和 v 的 exec 函数的参数表通报方式是不同的。含有 e 结尾的 exec 函数会通报一个情况变量列表。含有 p 结尾的 exec 函数取的是新步伐的文件名作为参数,而其他exec 函数取的是新步伐的路径。
如果函数堕落则返回-1,若成功则没有返回值。此中只有execve是真正意义上的系统调用,其它都是在此底子上经过包装的库函数。
exec函数族的作用是根据指定的文件名找到可实验文件,并用它来代替调用历程的内容,换句话说,就是在调用历程内部实验一个可实验文件。这里的可实验文件既可以是二进制文件,也可以是任何Unix下可实验的脚本文件。
Dyld