当前位置: 技术问答>linux和unix
linux:这样能实现父、子进程共享变量吗?
来源: 互联网 发布时间:2016-05-31
本文导语: #include int shareData;//要共享的变量 int main { int pid=fork(); if(pid==0) { extern int shareData;//声明使用外部变量 ////............ } else { //....... } return 0; } | ...
#include
int shareData;//要共享的变量
int main
{
int pid=fork();
if(pid==0)
{
extern int shareData;//声明使用外部变量
////............
}
else
{
//.......
}
return 0;
}
|
当然不行哦,你只要一写,那么核心就会将父、子进程的数据段分开,各有一份修改前的拷贝...
|
父子进程是有两个不同的进程空间,他们空闲的可以是文件描述符,信号处理,等。
对于变量来说,除非你这个变量是共享内存里的。
对于变量来说,除非你这个变量是共享内存里的。
|
子进程拥有父进程几乎所有的备份(堆,栈等).
2者间通信,你可以用管道,消息队列,共享内存啊.
你这里的想法就用共享内存可以搞定.
2者间通信,你可以用管道,消息队列,共享内存啊.
你这里的想法就用共享内存可以搞定.
|
父子进程属于不同的进程空间,父进程的变量会在子进程中复制一份,属于不同的变量了。当然可以创建一块共享内存进行消息传递。
有一个不可取的方法是,在vfork没有调用exec之前父进程阻塞,子进程使用父进程的地址空间,使用相同的变量,直到子进程调用exit或exec唤醒父进程。
有一个不可取的方法是,在vfork没有调用exec之前父进程阻塞,子进程使用父进程的地址空间,使用相同的变量,直到子进程调用exit或exec唤醒父进程。