10.4.6. Уничтожение других процессов
10.4.6. Уничтожение других процессов
Разрушение другого процесса почти столь же просто, как создание нового — нужно просто уничтожить его:
int kill(pid_t pid, int signum);
pid должен быть идентификатором процесса, который требуется уничтожить, а signum описывает, как это нужно сделать. Доступны два варианта выполнения операции[25] прерывания дочернего процесса. Вы можете применить SIGTERM, чтобы прервать его "вежливо". Это означает, что процесс при этом может сообщить ядру о том, что кто-то пытается его уничтожить; в результате появляется возможность завершить его корректно (сохранив файлы, например). Процесс может в этом случае игнорировать запрос на прерывание такого типа и продолжать выполняться. Применение значения SIGKILL в качестве параметра signum вызывает немедленное прерывание процесса без каких-либо вопросов. Если signum равно 0, то kill() проверяет, имеет ли тот процесс, что вызвал kill(), соответствующие полномочия, возвращает ноль, если это так, либо ненулевое значение, если полномочий недостаточно. Это обеспечивает процессу возможность проверки корректности pid.
Параметр pid в среде Linux может принимать перечисленные ниже значения.
pid > 0 Сигнал отправляется процессу с идентификатором pid. Если такого процесса нет, возвращается ESRCH. pid < -1 Сигнал посылается всем процессам, принадлежащим группе с pgid, равным -pid. Например, kill(-5316, SIGKILL) немедленно прерывает все процессы из группы 5316. Такая возможность используется оболочками управления заданиями, как описано в главе 15. pid = 0 Сигнал отправляется всем процессам группы, к которой относится текущий процесс. pid = -1 Сигнал посылается всем процессам системы за исключением инициализирующего процесса (init). Это применяется для полного завершения системы.Процессы могут нормально уничтожать вызовом kill() только те процессы, которые разделяют тот же эффективный идентификатор пользователя, что и у них самих. Существуют два исключения из этого правила. Во-первых, процессы с эффективным uid, равным 0, могут уничтожать любые процессы в системе. Во-вторых, любой процесс может посылать сигнал SIGCONT любому процессу в том же сеансе[26].
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Уничтожение (отмена) потока
Уничтожение (отмена) потока Корректное завершение выполняющегося потока «извне», из другого потока (то есть асинхронно относительно прерываемого потока), — задача отнюдь не тривиальная; она намного сложнее аналогичной задачи прерывания процесса. Это связано с
10.4.5. Уничтожение процессом самого себя
10.4.5. Уничтожение процессом самого себя Процессы прерывают себя вызовом либо exit(), либо _exit(). Когда функция процесса main() возвращает управление, стандартная библиотека С вызывает exit() со значением, возвращаемым main() в качестве параметра.void exit(int exitCode);void _exit(int exitCode);Две формы,
Уничтожение программы
Уничтожение программы Любой объект на уровне MI, который можно создать, можно и уничтожить. Соответственно на каждую команду создания объектов MI приходится команда уничтожения. Пользователь на уровне MI устанавливает системный указатель на программу или другой объект MI и
Уничтожение cookies: забудь, кто я
Уничтожение cookies: забудь, кто я Как вам известно, вся информация о вас прописывается в cookies-файлах. Вы попадаете на файлообменный сервис, и сервер с радостью узнает (помимо IP), что вот он, юзер с логином User12345678 и паролем qwerty. Не дам ему качать, алчному хапуге, у меня в логах
Уничтожение
Уничтожение Допустим, вы обнаружили, что ваш компьютер кишмя кишит всевозможными вирусами. Что делать?– Ни в коем случае не поддавайтесь панике! Наверное, ни один вирус не сможет натворить столько бед, сколько смогут дрожащие руки перепуганного пользователя. Поэтому
3.1.3. Уничтожение процесса
3.1.3. Уничтожение процесса Для уничтожения процесса предназначена команда kill. Ей достаточно указать идентификатор требуемого процесса.Команда kill посылает процессу сигнал SIGTERM, являющийся запросом на завершение.[10] По умолчанию, если в программе отсутствует обработчик
8.4.3. Динамическое создание и уничтожение массивов
8.4.3. Динамическое создание и уничтожение массивов Оператор new может выделить из хипа память для размещения массива. В этом случае после спецификатора типа в квадратных скобках указывается размер массива. Он может быть задан сколь угодно сложным выражением. new
14. Инициализация, присваивание и уничтожение класса
14. Инициализация, присваивание и уничтожение класса В этой главе мы детально изучим автоматическую инициализацию, присваивание и уничтожение объектов классов в программе. Для поддержки инициализации служит конструктор - определенная проектировщиком функция (возможно,
Уничтожение томатов
Уничтожение томатов К сожалению, в данный момент при столкновении сыра с помидорами ничего не происходит. Ситуацию надо исправить при помощи кода, добавленного в метод updatePosition, который приведен в листинге 11.30.Листинг 11.30// Уничтожаем помидоры при столкновении с сыромfor (int
Уничтожение одного элемента.
Уничтожение одного элемента. 1. Кликните дважды на элемент (заголовок, параграф, стихи и т. д.).2. Нажмите иконку BookCorrector "delete" или кликните правой кнопкой мышки внутри основного окна BookDesigner и затем нажмите "delete" в появившемся
Уничтожение нескольких последовательных элементов.
Уничтожение нескольких последовательных элементов. 1. Кликните дважды на первый элемент (заголовок, параграф, стихи и т. д.).2. Удерживая Shift, кликните на последний элемент.3. Нажмите иконку BookCorrector "delete" или кликните правой кнопкой мышки внутри основнового окна BookDesigner и затем
3.3.3. Уничтожение фонового задания
3.3.3. Уничтожение фонового задания Сигнал о завершении посылается процессу командой kill:kill [-сигнал] номер_процессаДалее в этой книге мы рассмотрим, какие существуют сигналы. Пока же достаточно знать, что по умолчанию команда kill посылает сигнал номер 1 — HUP (hang?up -oтбой). На