우리는 자식 프로세스의 NUM_PLAYERS
있고, 그 출력의 총 엉망를 얻을 수 있도록 그들 모두가 동시에 작성, 그들 각각은다른 프로세스가 동시에
player 5: I scored 0 (PID = 411160)
처럼 해당 ID를 출력하지만 문제입니다.
player player player 1: I'm in this game (PID = 11049)
player 01: I scored 3: I'm in this game (PID = 11051: I'm in this game (PID = 1048)
어떻게하면 서로 기다릴 수 있습니까? 실제 코드는 여기
int main(int argc, char *argv[])
{
for (i = 0; i < NUM_PLAYERS; i++) {
/* TODO: spawn the processes that simulate the players */
switch(pid = fork()) {
case -1:
printf("Perror\n");
exit(EXIT_FAILURE);
break;
case 0:
//printf("%s<%d>%s<%d>\n", "CHILD ", getpid(), " ppid: ", getppid());
//sleep(1);
dup2(seedArray[i][0], STDIN_FILENO);
close(seedArray[i][0]);
dup2(scoreArray[i][1], STDOUT_FILENO);
close(scoreArray[i][1]);
sprintf(arg1,"%d",i);
execv("./shooter", args);
//shooter(i, seedArray[i][0], scoreArray[i][1]);
//exit(EXIT_SUCCESS);
break;
default:
//pid = wait(NULL);
pidArray[i] = pid;
}
}
// SOME IRRELEVANT CODE HERE
int status;
for(i = 0;i < NUM_PLAYERS; i++)
{
wait(&status);
}
return 0;
}
출력을 로그 파일과 동기화하면 응용 프로그램에서 로깅이 병목 현상을 일으킬 수 있습니다. –