首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用克隆模拟vfork

使用克隆模拟vfork
EN

Stack Overflow用户
提问于 2012-04-06 19:57:51
回答 1查看 547关注 0票数 2

可以用clone来模拟vfrok的行为吗?到目前为止,我已经

代码语言:javascript
复制
pid=clone(fn,cStack,SIGCHLD|CLONE_FS | CLONE_FILES | CLONE_VM | CLONE_VFORK,NULL);

但我仍然需要传递我自己的堆栈,所以新进程在不同的堆栈框架中工作,但在相同的地址空间中工作(因为CLONE_VM),据我所知,如果我调用vfork而不使用exec中的某些函数,新进程将在与父进程相同的地址空间中操作,并且它使用相同的堆栈框架。

那么,有没有可能用clone创建一个新的进程,它在相同的地址空间中运行,并且使用与父进程相同的堆栈帧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 20:56:57

如果不用汇编器编写函数,这是不可能的。这是一个无法“修复”的基本问题;对于大多数archs (任何将返回地址存储在堆栈上的arch ),甚至vfork系统调用包装器本身都必须用汇编编写,而不是用C编写。这是因为子进程使用与父进程相同的堆栈运行后,可能会覆盖父进程中函数(vforkclone或其他包装器)需要返回的返回地址。

在汇编程序中,您只需在进行syscall之前将返回地址保存在一个寄存器中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10043173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档