我正在用c编写自己的shell,问题在于后台进程的实现。现在在 BASH 上,每当我们执行以“&”结尾的进程时,该进程进入后台并开始执行,后台进程的输出出现在终端上,当后台进程需要输入时,它会暂停,直到我们给出“fg”命令。
那么如何实现后台进程呢?
对于命令的任何正常执行(不以 & 结尾),我调用 fork 系统调用,然后在子进程中执行命令,父进程将等待子进程的执行(通过 wait())。
对于具有“&”的命令,我做了同样的事情,但父进程不会等待子进程的执行。我的问题是每当后台进程需要输入时,它就会控制终端。那么如何在需要输入时暂停子进程。