linux编程中 怎样将子进程变量值传给父进程?
比如inti=0,j=0;while((x=fork())==-1);if(x==0){i=10;}else{j=10;printf("j=%d\n",j);printf...
比如
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的值怎么传递给父进程? 展开
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最好别用,他直接改变父进程的数据段,这样如果子进程和父进程操作不一样,父进程就出错了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就用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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fork()是子进程复制父进程的相关信息,而vfork()是父子进程共享代码段和数据段。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询