【发布时间】:2014-10-27 04:59:25
【问题描述】:
我有以下程序,我在其中设置父进程组和子进程组,并将终端控制权交给父进程。然后,我在“背景”孩子中运行“猫”,它应该生成 SIGTTIN。但是,不打印 sighandler 中的 printf 行。在这种情况下如何正确检测 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;
}
【问题讨论】: