我正在为我的 CS 类编写一个 shell,如果用户传入了“&”字符,则该项目的一部分涉及在后台运行一个进程。
如果一个进程在前台运行,我只是execvp
该进程,它仍然控制着终端,因为它在前台。但是,如果它是后台进程,我必须在开始执行该进程后将控制权返回给我的主 shell。我知道系统调用tcsetpgrp(pid_t)
将作为参数传入的进程放在前台,但我不太明白如何使用它。
如果它是后台进程,tcsetpgrp
我应该打电话吗?execvp
如果是这样,我可以通过调用来获取我的 shell 的 pidgetpid
吗?