我還是新來分叉,我正在創建2-4個子進程,具體取決於命令行參數的數量。我得到的輸出對我來說非常困惑,我不知道我是否正確地做了這件事,如果我有這樣的想法,有人可以解釋爲什麼輸出結果是這樣嗎?分叉創建2 - 4個子女
for (int i = 2; i <= argc; i++) { //argc c is <=6
Player *player = malloc(sizeof(*player));
game->numPlayers = argc - 2;
// Fork and grab the pid (modify childPid global)
// -1 failed, 0 child, otherwise parent.
game->pid = fork();
if(game->pid == 0) {
printf("From parent\n");
} else {
printf("From child\n");
switch (childPid = game->pid) {
// There was an error with fork(), quit and tell the user
case -1:
exit_prog(EXIT_BADSTART);
break;
// Create the child
case 0:
create_player(&game, player, i);
break;
// Create the parent
default:
// create_parent(game);
break;
}
}
}
From child
From child
From parent
From parent
From child
From parent
From child
From child
From parent
From child
From parent
From child
From parent
From parent
哪裏是'從孩子'和'從父母'印?我可以建議你在打印時加上'getpid()',這會更容易找出哪個進程正在做什麼。 – SSC 2014-10-01 06:37:44
這是在代碼中...我的理解是,如果你想讓x個孩子,你循環x次循環。 – user3603183 2014-10-01 06:38:44
@ user3603183:如果你循環x次,你會得到(2^x) - 1個孩子 – Haris 2014-10-01 06:42:57