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