电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

fork与exec函数

fork与exec函数_第1页
1/9
fork与exec函数_第2页
2/9
fork与exec函数_第3页
3/9
exec 函数族 也许有不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork 产生的,而且由fork 产生的子进程和父进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?而且,就我们的常识来说,当我们执行一个程序的时候,新产生的进程的内容应就是程序的内容才对。是我们理解错了吗?显然不是,要解决这些疑惑,就必须提到我们下面要介绍的exec 系统调用。 1.10.1 简介 说是exec 系统调用,实际上在 Linux 中,并不存在一个exec()的函数形式,exec 指的是一组函数,一共有6 个,分别是: #include int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); 其中只有execve 是真正意义上的系统调用,其它都是在此基础上经过包装的库函数。 exec 函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux 下可执行的脚本文件。 与一般情况不同,exec 函数族的函数执行成功后不会返回 ,因 为 调用进程的实体 ,包括 代码 段 ,数据段 和堆 栈 等 都已 经被 新的内容取代,只留 下进程ID 等 一些表 面上的信 息 仍 保 持原 样,颇 有些神 似 "三 十 六 计 "中的"金 蝉 脱 壳 "。看 上去 还是旧 的躯 壳 ,却 已 经注 入 了新的灵魂 。只有调用失 败 了,它们才会返回 一个-1,从原 程序的调用点 接 着往 下执行。 现 在我们应该明 白 了,Linux 下是如 何执行新程序的,每 当有进程认 为 自 己 不能 为 系统和拥护 做 出任何贡 献 了,他 就可以发 挥 最 后一点 余 热 ,调用任何一个exec,让 自 己 以新的面貌重 生; 或 者,更 普 遍 的情况是,如 果 一个进程想 执行另 一个程序,它就可以fork 出一个新进程,然后调用任何一个exec,这样看 起 来就好 像 通...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

fork与exec函数

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部