C 如何使fork与父进程交互';菜单不打印菜单两次?
我正在做作业,需要一些帮助,了解如何在使用C 如何使fork与父进程交互';菜单不打印菜单两次?,c,unix,C,Unix,我正在做作业,需要一些帮助,了解如何在使用fork()函数时避免打印重复项 我的代码流程假定如下:打印菜单,用户选择一些选项,然后使用fork()创建一个重复的过程来执行选项所说的操作。 我在以下代码中隐藏了它的功能,并进行了打印,以便更容易理解: int main() { int option; pid_t pid; while (option != 3) { printf("\nMenu:"): printf("\n1 browser"):
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;
}
问题是这段代码会打印菜单,然后当我选择一些选项时,它不仅会执行我想要的操作,而且最终还会打印两次菜单,而且应该只打印一次,因为它会在执行预期操作后返回菜单。有没有办法避免这种情况?不清楚
fork()
是否对您有用,除非您忽略了一些重要的逻辑
但是,如果您确实想使用它,您需要:
pid
的值,在父进程和子进程中表现不同。(在子进程中它将为零。)wait()
或waitpid()
等待子进程退出,然后再继续主循环现在还不清楚
fork()
是否对您有用,除非您忽略了一些重要的逻辑
但是,如果您确实想使用它,您需要:
pid
的值,在父进程和子进程中表现不同。(在子进程中它将为零。)wait()
或waitpid()
等待子进程退出,然后再继续主循环就像你所说的,我使用了一些重要的逻辑,但是问题可以用这部分代码来解释。但是我会按照你说的去做,谢谢。就像你说的,我会使用一些重要的逻辑,但是问题可以通过代码的这一部分来解释。但我会照你说的做,谢谢。