我正在尝试为我的学校作业制作自己的shell,在成功的fork调用之后,我想把来自fork()函数的pid放到前台然后我想把自己的shell放到后台。然后在waitpid函数之后,我需要将自己的shell再次放到前台。为此,我想是这样的:
if(tcsetpgrp(0, getpgid(pid))!=0)
perror("Foreground error: ");
waitpid(pid, NULL, 0);
if(tcsetpgrp(0, getpgid(shellpid))!=0)
perror("Foreground error: ");}
但是在新进程完成后,linux shell会停止我自己的shell。 例如,ls命令是图片中的新进程。 Please look at here: for terminal screen shot
答案 0 :(得分:1)
添加“signal(SIGTTOU,SIG_IGN);”在tcsetpgrp解决了我的问题之前。 - AliCanÜstünel