Как да спрем препълване на стека демон на Руски

Той дори не е типи сигнал, че ви изпратим и че не разбирате как работи.

Ето какво пише:

Т.е. Вашата програма е завършена и когато PID<0 и тогда, когда pid>0. остава само една стойност - нула. Но това означава, че ние сме в процес на дете! В резултат на това на екипа

Тя изпраща сигнал към всички процеси с ПОУ == 0. Това се говориш. Ако детето ви иска да прави Harikiri процес, това е направено с помощта на излизане (0);

Ако искате да убие дете на родител, е необходимо да се изпрати сигнал до клона, където PID> 0. сигнал може да бъде, добре, най-малкото, SIGINT. Това е едно и също нещо сто натиснете Ctrl / В.

Има само един начин да убие процеса - да го изпрати сигнал, че не може да бъде обработена. Метод (всяка) не може да обработва сигнала, ако не е направена от процесора за обработка на сигнал или сигнала не се обработва в prinyipe (-9).

За да може да изпрати сигнал до процеса, трябва да знаете на PID. И тук са две възможности: 1) Вие знаете неговото PID, защото те самите го създали с помощта на вилица хирургия. 2) процес - правилно написана демон и той честно постави в директорията / реактивна / осъществява собствената PID-файл, който се записва и PID. В този случай името на файла трябва да съвпада с името на един работещ демон, и то е лесно да се разбере.

По този начин, си дете процес трябва да запише своя идентификатор на PID-файла в директорията / АБ / план. И си процес, който го убива - да се чете този файл, го извади и да причини PID убийство () с този PID-тата.

Съгласен съм, че не се разбира по много начини. но си давам сметка, че всеки път, когато ти се обадя на програмата завършва процеса родител и да започне нов. Така че аз трябва, че ще съм работил толкова дълго, колкото аз не бягам от програмата отново командата стоп. След това аз очаквам да се затвори и roditelskiyif (PID> 0) и едно дете (чрез убие) процеси. но ако смените убийството на излизане. vseravno процесът ще работи. - Вова Polischuck 24 Октомври '16 в 06:24

т.е., тук правя на такъв принцип, че всяко дете трябва да се нарича процес с пълен с команда. - Вова Polischuck 24 Октомври '16 в 06:28

Да започнем с това, че ти не разбираш същността на процесите. Ако пуснете програмата отново, тя генерира цял нов процес, и разбира се, завършването на излизане ще доведе до точно този нов процес, а не този, който използвате като демон. Обикновено в програмите, които поддържат демона се извършва, както следва: процес PID-демон се съхранява някъде на обществено място (/ Var / тичам, / ПТУ), а процесът е стартиран с параметъра --stop proofreads процеса на PID-демон, и прави го убие с това PID стойност.

Отговорено 24 '16 октомври в 10:26