我在fork和它的寫入系統上有一些麻煩。 我將創建params.writersCount處理,並在每個我需要獲得其內部ID(從1到params.writersCount)。所以在孩子我正在等待父進程,初始化孩子內部id(作家[我] = processId)。然後我可以調用writerSimulation並傳遞參數的上下文地址,因爲在context.id中現在是正確的內部id,因爲在寫系統上覆制(context.id = j + 1會強制unix複製頁面,所以每個孩子然後使用其內部ID擁有上下文副本)。但是,如果我嘗試在writerSimulation函數中使用context.id,我得到0.我做錯了什麼?分叉和共享頁面
for(int i = 0; i < params.writersCount; i++)
{
pid_t processId = fork();
if(!processId)
{
srand((unsigned int)(seconds+getpid()));
while(!context.id)
{
for(int j = 0; j < params.writersCount; j++)
{
if(writers[j] == getpid())
{
context.id = j+1;
}
}
struct timespec wait = {.tv_sec = 0, .tv_nsec = 500000};
nanosleep(&wait, NULL);
}
int simError = writerSimulation(&context);
return simError;
}
writers[i] = processId;
}
請寫出標準英語,包括首都。 – thb 2012-04-28 15:05:09