我的问题是执行父堆栈会发生什么?
main()
{
f();
g();
}
f()
{
vfork();
}
g()
{
int blast[100],i;
for(i=0;i<100;i++)
blast[i]=i;
}
答案 0 :(得分:3)
根据http://pubs.opengroup.org/onlinepubs/009695399/functions/vfork.html
,行为未定义如果vfork()[...]创建的进程从调用vfork()的函数返回[...]
,则行为未定义
答案 1 :(得分:-1)
在实践中,vfork
不再有用。阅读Linux的vfork man页面,其中 POSIX.1-2008删除了vfork()的规范。行为几乎与fork
的行为相同(除了vfork
父母被停职)。所以我敢打赌,实际上,fork
今天几乎就像fork
。但是我在过去十年中阅读的所有程序都使用vfork
而不是{{1}}(因为写入分页行为的惰性副本今天已足够有效)。