LINUX.ORG.RU

Не могу убить Child-процесс


0

0

Всем превед.

Порождаю процесс вызовом fork(). Затем в порожденном процессе при наступлении определенных условий вызываю raise(SIGKILL) или kill(getpid(),SIGKILL) нифига не убивается.

Смотрю командой ps aux | grep tcpserver и вижу:

root 25567 0.0 0.7 7724 1884 pts/7 S+ 03:04 0:00 ./tcpserver 192.168.91.30

root 25571 0.0 0.0 0 0 pts/7 Z+ 03:04 0:00 [tcpserver] <defunct>

root 25625 0.0 0.0 0 0 pts/7 Z+ 03:10 0:00 [tcpserver] <defunct>

root 25738 0.0 0.3 3148 792 pts/5 S+ 03:39 0:00 grep tcpserver

Пробую из командной строки kill -9 25625

Также безрезультатно

В чем косяк мой ?


По покойничку пли

root 25625 0.0 0.0 0 0 pts/7 Z+ 03:10 0:00 [tcpserver] <defunct>

Он уже умер :-(
Когда папашка это осознает он исчезнет из людской памяти ;-(

io ★★
()

Родительский должен сделать wait(). До тех пор дочерний находится
в состоянии зомби.

ttnl ★★★★★
()

Сделай sigignore(SIGCHLD); в самом начале родительского процесса, если не нужно отслеживать, когда детишки отваливаться будут.

const86 ★★★★★
()

Убивать зомби бесполезно. С ними нужно бороться другими методами. Если же не бороться совсем, то это может привести к катастрофе: http://www.youtube.com/watch?v=eiOJ2P_jvnU

mv ★★★★★
()
Ответ на: комментарий от mv

>task_struct продолжает жить.

1) это память ядра, а не процесса
2) пару килобайт в современных реалиях никак нельзя назвать «жрать память»

nu11 ★★★★★
()
Ответ на: комментарий от nu11

1) это память ядра, а не процесса

Память процесса к памяти другого процесса тоже никакого отношения не имеет.

2) пару килобайт в современных реалиях никак нельзя назвать «жрать память»

PID'ы раньше кончатся.

mv ★★★★★
()
Ответ на: комментарий от mv

>Память процесса к памяти другого процесса тоже никакого отношения не имеет.
это тут при чем?

PID'ы раньше кончатся.

pid'ы это все таки не память

nu11 ★★★★★
()
Ответ на: комментарий от nu11

это тут при чем?

Почему вас одна память волнует, а другая нет?

pid'ы это все таки не память

Формально это тоже память =)

mv ★★★★★
()
Ответ на: комментарий от mv

>Почему вас одна память волнует, а другая нет?
меня эти пара килобайт вообще не волнуют :)

Формально это тоже память =)

с чего бы? Общего с памятью только свойство заканчиваться

nu11 ★★★★★
()
Ответ на: комментарий от nu11

меня эти пара килобайт вообще не волнуют :)

если у тебя в системе 32-битные pid-ы и на каждую зомбю по 2кб ядерной памяти то тачка треснет через некоторое время, если только ulimit -u какой-нить всё не испортит.

true_admin ★★★★★
()
Ответ на: комментарий от nu11

память ядра кончится и превед. У меня сеть отваливалась когда некие буфера заканчивались в ведре и e1000 гадил в dmesg.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Да-да, а ещё можно calloc(1, 4*1024*1024*1024) сделать. Только зачем?

kemm
()
Ответ на: комментарий от true_admin

>память ядра кончится и превед.
ну вот и посчитай, сколько нужно зомби чтобы кончилась память ядра.

nu11 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.