当前位置:  技术问答>linux和unix

vfork的使用

    来源: 互联网  发布时间:2017-04-11

    本文导语:  #include #include int main(void) { pid_t pid; int count=0; pid=vfork(); count++; printf("%dn",count); return 0; } 运行结果: [root@cfc process]# ./vfork 1 1 总线错误 我的期望结果是: 1 2 why? | 把return 0改成_exit(0) vfork...

#include
#include

int main(void)
{
pid_t pid;
int count=0;
pid=vfork();
count++;
printf("%dn",count);
return 0;
}


运行结果:

[root@cfc process]# ./vfork
1
1
总线错误



我的期望结果是:
1
2
why?

|
把return 0改成_exit(0)

vfork是父进程先阻塞,让子进程是在父进程地址空间中运行, 子进程与父进程的栈空间是共享的
子进程结束后return执行清栈操作会导致父进程执行时栈出现异常从而crash

参见man:
vfork() differs from fork(2) in that the calling thread is suspended until the child terminates (either normally, by calling _exit(2),  or  abnormally, after delivery of a fatal signal), or it makes a call to execve(2).  Until that point, the child shares all memory with its parent, including the stack.  The child must not return from the current function or call exit(3), but may call _exit(2).

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我想和vfork出来的子进程通信(见者加分)
  • <unix环境变量高级编程第8章> vfork例题的疑问
  • 我想让vfork后就execl一进程,同时让execl出来的进程之间能相互通信,求助
  • 请问下面一个关于vfork的c程序的运行结果为什么会出现Segmentation fault ?哪位高手帮我解释下,谢谢。
  • 急!同一个c文件里vfork();pthread_create();两个函数,Makefile该怎么写?谢谢
  • vfork函数
  • 关于vfork()函数对父进程空间的处理
  • 一个简单的vfork pid 问题?
  • CSS属性参考手册 iis7站长之家
  • 关于vfork()问题,为什么其对父进程共享的变量的操作结果不是预期的?请高手指点,多谢了
  • vfork深度解析!!!
  • vfork中多进程间共享描述符的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,