在waitpid调用后如何将自己的shell置于前台?

时间:2015-12-09 23:24:25

标签: c linux shell

我正在尝试为我的学校作业制作自己的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

1 个答案:

答案 0 :(得分:1)

添加“signal(SIGTTOU,SIG_IGN);”在tcsetpgrp解决了我的问题之前。 - AliCanÜstünel