заказ SIGCONT и SIGHUP отправлен в осиротевшую группу процессов linux

APUE говорит

Так как группа процессов становится сиротой, когда родитель определяет, POSIX.1 требует, чтобы каждому процессу во вновь потерянной группе процессов, который остановлен (как наш дочерний элемент), был послан сигнал зависания (SIGHUP), за которым следует сигнал продолжения (SIGCONT)

#include 
#include 
#include 
#include 
#include 
#define errexit(msg) do{ perror(msg); exit(EXIT_FAILURE); } while(0)
static void sig_hup(int signo)
{
    printf("SIGHUP received, pid = %d\n", getpid());
}
static void sig_cont(int signo)
{
    printf("SIGCONT received, pid = %d\n", getpid());
}
static void sig_ttin(int signo)
{
    printf("SIGTTIN received, pid = %d\n", getpid());
}
static void pr_ids(char *name)
{
    printf("%s: pid = %d, ppid = %d, pgrp = %d, tpgrp = %d\n",
           name, getpid(), getppid(), getpgrp(), tcgetpgrp(STDIN_FILENO));
}
int main(int argc, char *argv[])
{
    char c;
    pid_t pid;
    setbuf(stdout, NULL);
    pr_ids("parent");
    if ((pid = fork()) < 0) {
            errexit("fork error");
    } else if (pid > 0) { /* parent */
            sleep(5);
            printf("parent exit\n");
            exit(0);
    } else { /* child */
            pr_ids("child...1");
            signal(SIGCONT, sig_cont);
            signal(SIGHUP, sig_hup);
            signal(SIGTTIN, sig_ttin);
            kill(getpid(), SIGTSTP);
            //sleep(10);
            pr_ids("child...2");
            if (read(STDIN_FILENO, &c, 1) != 1) {
                    printf("read error from controlling TTY, errno = %d\n", 
                                                             errno);
            }
            printf("child exit\n");
    }
    exit(0);
  }

вывод программы:

родитель: pid = 2036, ppid = 1959, pgrp = 2036, tpgrp = 2036

ребенок ... 1: pid = 2037, ppid = 2036, pgrp = 2036, tpgrp = 2036

родительский выход

xiejingfeng @ xiejingfeng-desktop: / коды / apue $ SIGCONT получено, pid = 2037

SIGHUP получено, pid = 2037

ребенок ... 2: pid = 2037, ppid = 1, pgrp = 2036, tpgrp = 1959

ошибка чтения из-за контроля TTY, errno = 5

выход ребенка

результат не ожидается, как написано в книге, потому что программа сначала получает SIGCONT, а затем SIGHUP, что меня очень смущает, вы, ребята, можете мне помочь?

заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос