Я написал программу на C ++ и выполняю ее в терминале gnome (я нахожусь на Ubuntu). Я нажимаю Ctrl + Z, который приостанавливает процесс. Позже я выполню %
на том же терминале, который возобновляет выполнение.
Из того, что я прочитал, Ctrl + Z отправляет TSTP сигналы процессу, который говорит ему остановить выполнение. Но TSTP вежлив, в том смысле, что процесс может продолжаться до тех пор, пока он не решит, что может остановиться. В моем программном коде на C ++ я ничего не делал для явного обращения с сигналами TSTP. Итак, мой вопрос: что внутри моего кода C ++ будет продолжать работать, несмотря на сигнал TSTP? Например, если у меня открыт поток файлов, будет ли он ждать, пока он не закроется? Я ожидаю полного ответа, не слишком глубокого или охватывающего все детали. Я просто хочу понять, как это происходит.
Ваша программа продолжает работать, пока SIGTSTP
обработчик выполняется. Так как вы не настроили его, вы получаете поведение обработки сигналов по умолчанию, при котором процесс должен быть остановлен.
Пока ваш процесс остановлен, он просто не запланирован для выполнения. Файлы не закрываются и не задерживаются до тех пор, пока файлы не закроются (если это не сделано в обработчике сигналов).
Этот веб-сайт выглядит как полезное объяснение того, как можно установить обработчик для выполнения некоторых задач, а затем использовать режим остановки по умолчанию: