shell 如何在 wait() 之后获得终端的控制权?

shell 如何在 wait() 之后获得终端的控制权?

我们知道shell forks(),将其分配给不同的进程组,并使其成为前台进程组,这样cntrl-ccntrl-z将转到子进程组,父进程等待它。但是,孩子完成后,父母如何取回终端呢?

我制作 shell。将上面的父级视为 myshell,将上面的子级视为我将给出的命令。child(command) 将使用 exec() 系列函数执行。我注意到我的父级(shell)没有得到终端返回(我已经使用tcgetpg(pid)after进行了检查wait())。

答案1

有一个名为 的函数tcsetpgrp可以为特定终端设置前台进程组,从而允许 shell 再次成为前台进程。另外,tcgetpgrp您提到的函数采用文件描述符而不是 pid 作为参数。我建议查看这两个函数的手册页。

相关内容