Operating system 如何在NachOs中使用Fork()获取返回值?
这是我的代码: void playerproc(智力型玩家) {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(…)正在分配新堆栈并添加线程以将函数运行到就绪队列
这是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");
}