1
我有以下程序,我设置父进程组和子进程组,并将终端控制权交给父进程组。然后,我在“背景”孩子中运行“猫”,该孩子应该生成SIGTTIN。但是,sighandler中的printf行不会被打印。任何想法如何在这种情况下正确检测SIGTTIN?当孩子后台进程运行“猫”时检测SIGTTIN
void sighandler(int signo){
printf("SIGTTIN detected\n");
}
int main() {
int status;
pid_t pid;
pid = fork();
setpgid(0,0);
tcsetpgrp (STDIN_FILENO, 0);
signal(SIGTTIN, sighandler);
if (pid == 0)
{
setpgid(0,0);
execl ("cat", NULL);
_exit (EXIT_FAILURE);
}
else{
int status;
setpgid(pid,pid);
waitpid(-1, &status, 0);
}
return status;
}
如何在一个子进程中检测SIGTTIN,试图从上面的程序中读取后台进程中的STDIN?我似乎无法检测到它甚至使用sigaction .. – Mariska 2014-10-27 11:17:33
嘿Mariska,更新!请让我知道,如果你有任何问题! – 2014-10-27 16:33:15