Operating system 如何在NachOs中使用Fork()获取返回值?

Operating system 如何在NachOs中使用Fork()获取返回值?,operating-system,kernel,nachos,Operating System,Kernel,Nachos,这是我的代码: void playerproc(智力型玩家) { 这是NIM游戏的代码。现在我想从方法playerproc(我使用fork()生成)返回值,并在方法NIM管理器中获取其返回值。我无法获取它。我使用的是NachOs。我认为您应该看看fork(…)源代码位于/threads/thread.cc。当我使用NACHOS时,我总是在源代码中找到答案 Fork(…)返回void。除非将函数的返回值设置为全局变量,否则您将无法访问它。Fork(…)正在分配新堆栈并添加线程以将函数运行到就绪队列

这是我的代码: void playerproc(智力型玩家) {


这是NIM游戏的代码。现在我想从方法playerproc(我使用fork()生成)返回值,并在方法NIM管理器中获取其返回值。我无法获取它。我使用的是NachOs。

我认为您应该看看fork(…)源代码位于/threads/thread.cc。当我使用NACHOS时,我总是在源代码中找到答案

Fork(…)返回void。除非将函数的返回值设置为全局变量,否则您将无法访问它。Fork(…)正在分配新堆栈并添加线程以将函数运行到就绪队列中。因此,函数的返回变量的作用域仅限于该函数

为什么要为playerproc()函数分叉线程?多个线程在这里没有多大意义,因为主线程必须等待playerproc()返回后才能继续

         switch(player)
         {
                 case 1:
                         move=(numSticks+4)%5;
                         return move;
                 break;
                 case 2:
                         srand(5);
                         move=(rand()%4)+1;
                         return move;
         }
 }

 void nimmanager(int numStick)
 {
         numSticks=numStick;
         int player;
         Thread *t=new Thread("Players");
         while(numSticks!=0)
         {
                 player=1;
                 int move=t->Fork(playerproc,player);
                 numSticks-=move;
                 printf("Name of the player: %d\nNumber of sticks taken:%d\nNumber of sticks left=%d",player,move,numSticks);
                 player=2;
                 int move=t->Fork(playerproc,player);
                 numSticks-=move;
                 printf("Name of the player: %d\nNumber of sticks taken:%d\nNumber of sticks left=%d",player,move,numSticks);

         }
         printf("Winner is player 1");
 }