解释这段代码的工作;子进程怎么返回值呢? [英] Explain this code's working; how the child process returns values and where?

查看:198
本文介绍了解释这段代码的工作;子进程怎么返回值呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$ p

输出是6,7;
问题来源: http:// www .cs.utexas.edu /〜mwalfish / classes / s11-cs372h / hw / sol1.html

 程序1:
main()
{
val = 5;
if(fork())
wait(& val);
val ++;
printf(%d\\\
,val);
return val;
}


解决方案

主要流程:

  val = 5; 
wait(& val); //等待小孩完成

子进程:

  val ++; // val变为6 
printf(%d\\\
,val); // print 6
return val; //返回val返回主进程

主进程:

  wait(& val); // val变为6 
val ++; // val变为7
printf(%d\\\
,val); // print 7
return val;


I don't get how the value is returned by a child process and to whom?

Output is 6, 7 ; question source: http://www.cs.utexas.edu/~mwalfish/classes/s11-cs372h/hw/sol1.html

Program 1: 
main() 
{ 
    val = 5; 
    if(fork()) 
    wait(&val); 
    val++; 
    printf("%d\n", val); 
    return val; 
}

解决方案

Main process:

val = 5; 
wait(&val); // wait until child finishes

Child process:

val++; // val becomes 6
printf("%d\n", val); // prints 6
return val; // return val back to main process

Main process:

wait(&val); // val becomes 6
val++; // val becomes 7
printf("%d\n", val); // prints 7
return val; 

这篇关于解释这段代码的工作;子进程怎么返回值呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆