русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Завершення процесу в Linux

Нормальне завершення процесу відбувається при досягненні кінця функції або при виконанні системного виклику exit . При цьому процес встановлює деякий код свого завершення, який може бути прочитаний процесом-предком.

Примусове завершення процесу в Linux ззовні може бути виконано за допомогою системного виклику kill, посилає процесу сигнал. Детальний розгляд сигналів ми проведемо в такій лабораторній роботі, поки ж тільки відзначимо, що гарантовано "вбити" процес, що має PID = p, можна системним викликом:

 kill(p,SIGKILL)

 

 

Очікування завершення процесу

Процес-попередник може очікувати завершення процесу-нащадка (чи процесів-нащадків) за допомогою системних викликів wait або waitpid. Якщо процес-нащадок ще не завершився, процес-попередник перекладається таким системним викликом у стан очікування до завершення процесу-нащадка (втім, процес може і не очікувати завершення нащадка, а тільки перевірити, чи закінчилася він). Ці системні виклики дозволяють також процесу предкові дізнатися код завершення нащадка.

Якщо процес-нащадок завершує свою роботу перш процесу-предка, і процес-попередник явно не вказав, що він не зацікавлений в отриманні інформації про статус завершення процесу-нащадка, то завершився процес-нащадок не зникає з системи остаточно, а залишається в стані закінчив виконання (зомбі-процес) або до завершення процесу-предка, або до того моменту, коли попередник перевірить завершення нащадка.

Кожен процес-нащадок при завершенні роботи посилає свого процесу-предкові спеціальний сигнал SIGCHLD, на який у всіх процесів за замовчуванням встановлено реакція "ігнорувати сигнал". Наявність такого сигналу спільно з системним викликом waitpid() дозволяє організувати асинхронний збір інформації про статус завершилися породжених процесів процесом-предком.

Переглядів: 1723

Повернутися в зміст:ОС Linux




Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн