linux编程中 怎样将子进程变量值传给父进程?

来源:百度知道 编辑:UC知道 时间:2024/06/06 22:22:10
比如
int i=0, j=0;
while((x=fork())==-1);
if(x==0)
{
i=10;
}else
{
j=10;
printf("j=%d\n",j);
printf(" ____", _____ );
}
直接打i,值是0,
怎样在第二个printf语句中将i=10的值打出来
i的值怎么传递给父进程?

那就用vfork()吧,因为用fork()时子进程改变了i值,此时代码段就会不一样,没办法传过去,除非用其他的通信机制,用vfork()可以。
#include <stdio.h>
#include <unistd.h>
int i=0;
main(int args, char *argv[])
{
int j=0;
int x;
while((x=fork())==-1);
if(x==0)
{
i=10;
}else
{
j=10;
printf("j=%d\n",j);

printf("i=%d\n", i);
}

exit(0);
}

使用管道,或者开辟共享内存区。vfork最好别用,他直接改变父进程的数据段,这样如果子进程和父进程操作不一样,父进程就出错了。

fork()是子进程复制父进程的相关信息,而vfork()是父子进程共享代码段和数据段。