通过引用传递结构数组

问题描述 投票:0回答:0

我必须分叉一些孩子,并在他们分叉出一组称为 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];'的方式

arrays c struct pass-by-reference
© www.soinside.com 2019 - 2024. All rights reserved.