我正在为我的CS课程编写一个shell,其中项目的一部分涉及如果用户传入'&'字符,则在后台运行进程。
如果在前台运行进程,我只需要execvp
该进程并将其保留在终端控制下,因为它是在前台。但是,如果它是后台进程,则必须在启动进程的执行后将控制权返回到我的主shell。我知道系统调用tcsetpgrp(pid_t)
会将传递的进程作为参数放置在前台,但我不太明白如何使用它。
如果是后台进程,我应该在execvp
之后调用tcsetpgrp
吗?如果是这样,我可以通过调用getpid
来获取我的shell的pid吗?