Все о моделировании в Компас-3D LT
   Главная Статьи Файлы Форум Ссылки Категории новостей
Июль 17 2019 00:14:32   
Навигация
Главная
Статьи
Файлы
FAQ
Форум
Ссылки
Категории новостей
Обратная связь
Фото галерея
Поиск
Разное
Карта Сайта
Популярные статьи
Что необходимо ... 65535
Учимся удалять!... 23451
4.12.1 Професси... 22299
Примеры, синони... 21229
FAST (методика ... 19163
Просмотр готовы... 18895
Декартовы коорд... 17269
Просмотр готовы... 15707
Работа с инстру... 11869
Что такое САПР 11267
Сейчас на сайте
Гостей: 1
На сайте нет зарегистрированных пользователей

Пользователей: 9,955
новичок: Logyattella
Друзья сайта
Ramblers Top100
Рейтинг@Mail.ru

Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ по Delphi
Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog
7.2.3 Посылка сигналов процессами
Для посылки сигналов процессы используют системную функцию kill. Синтаксис вызова функции:
kill(pid, signum)
где в pid указывается адресат посылаемого сигнала (область действия сигнала), а в signum — номер посылаемого сигнала. Связь между значением pid и совокупностью выполняющихся процессов следующая:
• Если pid — положительное целое число, ядро посылает сигнал процессу с идентификатором pid.
• Если значение pid равно 0, сигнал посылается всем процессам, входящим в одну группу с процессом, вызвавшим функцию kill.
• Если значение pid равно -1, сигнал посылается всем процессам, у которых реальный код идентификации пользователя совпадает с тем, под которым исполняется процесс, вызвавший функцию kill (об этих кодах более подробно см. в разделе 7.6). Если процесс, пославший сигнал, исполняется под кодом идентификации суперпользователя, сигнал рассылается всем процессам, кроме процессов с идентификаторами 0 и 1.
• Если pid — отрицательное целое число, но не -1, сигнал посылается всем процессам, входящим в группу с номером, равным абсолютному значению pid.
Во всех случаях, если процесс, пославший сигнал, исполняется под кодом идентификации пользователя, не являющегося суперпользователем, или если коды идентификации пользователя (реальный и исполнительный) у этого процесса не совпадают с соответствующими кодами процесса, принимающего сигнал, kill завершается неудачно.
В программе, приведенной на Рисунке 7.13, главный процесс сбрасывает установленное ранее значение номера группы и порождает 10 новых процессов. При рождении каждый процесс-потомок наследует номер группы процессов своего родителя, однако, процессы, созданные в нечетных итерациях цикла, сбрасывают это значение. Системные функции getpid и getpgrp возвращают значения кода идентификации выполняемого процесса и номера группы, в которую он входит, а функция pause приостанавливает выполнение процесса до момента получения сигнала. В конечном итоге родительский процесс запускает функцию kill и посылает сигнал о прерывании всем процессам, входящим в одну с ним группу. Ядро посылает сигнал пяти «четным» процессам, не сбросившим унаследованное значение номера группы, при этом пять «нечетных» процессов продолжают свое выполнение.
#include ‹signal.h›
main() {
register int i;
setpgrp();
for (i = 0; i ‹ 10; i++) {
if (fork() == 0) {
/* порожденный процесс */
if (i & 1) setpgrp();
printf("pid = %d pgrp = %d\n", getpid(), getpgrp());
pause(); /* системная функция приостанова выполнения */
}
}
kill(0, SIGINT);
}
Рисунок 7.13. Пример использования функции setpgrp
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Случайные статьи
Глава пятая. ВЫВО...
10.3.2 Терминальны...
Текст и рассуждение
3.5. Ключевые прак...
7.2.4. Измерения ...
7.3.3. Концепции, ...
7.2. Интерпретация...
6.3 КОНТЕКСТ ПРОЦЕССА
Личные впечатления...
Правила для атрибутов
Глава 27. Garmin G...
3.4. Разделы
Глава 20. GSM-теле...
2.3.1 Общие сообра...
9.1.1 Управление п...
2.4.4 Линейные коды
10.3.7 Вход в систему
Каскадное удаление
Исчисление предик...
3.3. Группы ключе...
Методология всеобщ...
2.4.6 Код Хемминга...
7.4.2. Организа...
5.2 Адресация в IP...
Характеристики карты
10.1.2.6 Другие фу...
Страница «Позицион...
Теоретические опас...
Об авторе
Промежуточный хара...
2.2.1. Понимание ...
Рабочая станция
Глава 5. Как уста...
11.5 ВЫВОДЫ
Точность и аккурат...
Подход Киберсо
Удобство использов...
7.2.1. Обязательс...
Обязательные атрибуты
9.1.3 Загрузка (по...
Мини-чат
Вам необходимо залогиниться.

Нет присланных сообщений.
Copyright © 2009