case 1:
if (fork())
wait(0);
else
execlp("ls", "ls", (char *)NULL);
break;
我被告知要在C语言中创建一个用户界面文本显示菜单,该菜单以前是在Shell脚本的帮助下完成的。我已经浏览了ncurses库,但是如果有人能指导我以前使用ncurses为C for Linux中的菜单实现的代码,我将不胜感激。
答案 0 :(得分:1)
您展示的代码只是一个片段,它不是“功能”。它看起来是从switch
语句的中间复制出来的。
如果要切换的表达式的值为1,它将fork()
一个新进程。然后,子进程将execlp()
并运行ls
程序。父母将等待孩子完成。
答案 1 :(得分:0)
然后秘密就在岔路口。
成功时,子进程的PID返回给父进程,0返回给子进程。失败时,-1返回到父级,并且没有创建子进程,并且正确设置了errno。
当您分叉时,您将获得另一个进程,与第一个进程完全相同。唯一的区别是在子进程fork中返回了不同的值。
您的代码基本上是这样说:
如果我是父母,请等待。
如果我是孩子,请继续工作 - 在您的情况下获取目录列表。
一旦目录列表完成,我假设孩子已经死了,父母会继续生活。
这是做你正在做的事情的相当典型的代码。你有一个主要的应用程序是“菜单”,你正在生成临时副本,只需执行菜单所需的shell命令,然后恢复正常生活。
结帐man fork
... fork
答案 2 :(得分:0)