我必须分叉一些孩子,并在他们分叉出一组称为 PCB 的结构时跟踪一些值。我使用了一个名为 forker 的函数来分叉子进程,并在其中试图修改结构数组,但是当我在 fork 函数之后打印整个结构时,它的空白和全是零。 forker 函数跟踪启动的子项总数,我将其用作数组的索引。知道我做错了什么以至于它不会在我的结构中保存值吗? `
分叉功能
int forker(int totaltoLaunch, int simulLimit, int timeLimit, int totalLaunched,PCB *processTable)
{
pid_t pid;
if(totalLaunched==simulLimit){
return (totaltoLaunch);
}
else if(totaltoLaunch > 0)
{
if ((pid = fork()) < 0)
{
perror("fork");
}
else if (pid == 0)
{
processTable[totalLaunched].occupied = 1;
processTable[totalLaunched].pid = pid;
processTable[totalLaunched].startSeconds = 0;
processTable[totalLaunched].startNano = 1;
printf("I am a child and supposed to run %d seconds\n", timeLimit);
exit(0);
}
else if(pid > 0)
{
forker(totaltoLaunch - 1, simulLimit, timeLimit, totalLaunched + 1, processTable);
}
}
else
return (0);
}
这就是我创建工艺表`PCB processTable[20];'的方式