Какой сигнал отправляется, когда вы завершаете программу из диалогового окна «Возможно, это окно занято и не отвечает...»?

Действительно ли страница пуста? Что говорят журналы?

Подозреваю, что вы использовали устаревшую форму короткого тега <?.

Попробуйте использовать полную форму <?phpвместо:

<?php
    phpinfo();
?>
1
04.05.2021, 01:28
1 ответ

Он использует SIGKILL, который принудительно завершает любой процесс (, кроме процессов, находящихся в непрерывном спящем режиме или являющихся зомби ). Чтобы завершить все дочерние процессы этого процесса, сигнал может быть отправлен всем процессам в группе процессов. Это делается путем указания отрицательного PID. Например, если 1234 не отвечает, его и его дочерние элементы можно убить с помощью kill(-1234, SIGKILL). Однако Xfce, похоже, не отправляет этот сигнал всей группе процессов, а только процессу с окном.

Обратите внимание, что SIGKILL— это тяжелый -способ завершения процесса. В отличие от большинства сигналов, процесс, который получает сигнал уничтожения, не может настроить процедуры очистки, которые будут выполняться после получения сигнала, поэтому он может завершиться в середине записи в файл, что приведет к повреждению этого файла.


Вhelper-dialog/helper-dialog.c:83у нас есть сообщение, которое вы видите:

dialog = gtk_message_dialog_new (NULL, 0,
                                 GTK_MESSAGE_WARNING,
                                 GTK_BUTTONS_YES_NO,
                                 _("This window might be busy and is not responding.\n"
                                   "Do you want to terminate the application?"));

Этот диалог запускается функцией terminateShowDialog(), которая сама вызывает функцию terminateProcessIO(), обе они определены вsrc/terminate.c. Затем terminateProcessIO()вызывает clientTerminate(), определенный в src/client.c:2730. Здесь мы видим, что он используетSIGKILL:

if (kill (c->pid, SIGKILL) < 0)
{
    g_warning ("Failed to kill client id %d: %s", c->pid, strerror (errno));
}
1
28.07.2021, 11:35

Теги

Похожие вопросы