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