Я делаю домашнее задание и мне нужна помощь, чтобы избежать печати дубликатов при использовании функции fork()
.
Предполагается, что поток моего кода выглядит следующим образом: меню печатается, пользователь выбираетнекоторые параметры, а затем он создает дубликат процесса, используя fork()
, чтобы сделать то, что говорит опция.Я скрываю, что он делает со следующим кодом, и печатает вместо него, чтобы его было легче понять:
int main() {
int option;
pid_t pid;
while (option != 3) {
printf("\nMenu:"):
printf("\n1 browser"):
printf("\n2 terminal"):
printf("\n3 finish"):
printf("\nOption:"):
scanf("%d", &option);
switch (option) {
case 1:
if ((pid = fork()) == -1) {
printf("error");
} else {
printf("browser");
}
break;
case 2:
if ((pid = fork()) == -1) {
printf("error");
} else {
printf("terminal");
}
break;
case 3:
break;
default:
break;
}
return 0;
}
Проблема в том, что этот код печатает меню, а затем, когда я выбираю некоторые из опций, он не толькоделает то, что я хочу, но в конце он также печатает меню дважды, и должен печатать его только один раз, вызывая его возврат в меню после того, как он выполняет то, для чего он предназначен.Есть ли способ избежать этого?