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

关于fork 的一点疑问...

    来源: 互联网  发布时间:2017-02-10

    本文导语:  请问全局的静态变量是否在父子进程中共用一份.. 我写了一段这样的程序主体是这样的 static int num=10; int main() { pid _t pid; pid=vfork(); switch(pid) { case -1:    exit(EXIT_FAILURE);   break; case 0:    num=20; break; default:   ...

请问全局的静态变量是否在父子进程中共用一份..
我写了一段这样的程序主体是这样的
static int num=10;
int main()
{
pid _t pid;
pid=vfork();
switch(pid)
{
case -1:
   exit(EXIT_FAILURE);
  break;
case 0:
   num=20;
break;
default:
  printf("%dn",num);
break;
}
}
这样输出的是20
但是不用vfork 的话 用wait 等带子进程运行,输出的就是10 呢  请大侠解释下 还是我wait  错了
static int num=10;
int main()
{
pid _t pid;
pid=vfork();
int  staus;
switch(pid)
{
case -1:
   exit(EXIT_FAILURE);
  break;
case 0:
   num=20;
break;
default:
wait(&staus)
  printf("%dn",num);
break;
}
}

请大侠指点....


|
fork()出来的子进程是父进程的一个拷贝;全局变量是属于地址空间的数据段,当然也会被拷贝到子进程的地址空间里面。
vfork()和 fork()有几点不一样: 1: vfork()出来的子进程直接在父进程地址空间里运行,没有拷贝的动作 2. vfork()出来的子进程先运行(父进程被挂起)。fork()出来的子进程则不一定,可能在父进程前或者后。

|
全局的静态变量 也应该是父子进程各一份的,相互独立!

|
测试下不就知道喽

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












  • 相关文章推荐
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • 技术文章 iis7站长之家
  • 一个fork的问题
  • 新手的问题关于fork?
  • 如何理解fork函数返回2次啊?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • fork之后的输出
  • fork() 父子进程执行顺序问题
  • 关于fork创建进程的一个问题
  • exit和fork是什么关系?他们是怎么配合使用的?
  • fork函数,在线等待,马上结贴。谢谢!!!!!!!!!!!!
  • fork的问题
  • 请教 linux的fork从什么版本开始支持COW?
  • c++ 和 fork


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3