Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 7

Как убить внучатый процесс?

12.01.2017, 12:25. Показов 3191. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.

Есть три процесса:

chr45(бесконечный) -> запускает сhr30 (должен завершиться через 30 секунд)-> запускает chr15(бесконечный).

Проблема в том, что при завершении chr30 нужно убить и порожденный им chr15 а этого не получается.

Процессы запускаю через system("chrx").

Убивать пробовал system("kill -15 -getpid(chr30)) - при этом выдается сообщение, что процесс (chr30) не найден, хотя ps af выдает в списке chr30.

Только после system("kill -15 -PID_старшего chr45) удаляются все 3 запущенные процесса.

Играю с Raspbian ( Debian jessie).

Что подскажете?
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2017, 12:25
Ответы с готовыми решениями:

Тормозит внучатый процесс
Господа, Есть процесс, назовем его TWO, который запускает FFMPEG. В качестве параметров передается откуда-куда транслировать медиа,...

Как убить процесс?
Как убить процесс с помощью программы(консольного приложения)?

Как убить процесс?
Посмотрел на форумах и/к на убивание процесса, у всех делается через код т.е. Process proc = Process.GetProcesses(); ...

9
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
12.01.2017, 14:31
А если убивать так: system("killall chr30")?
0
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 7
12.01.2017, 15:06  [ТС]
буду пробовать, но сомневаюсь в успехе: при запуске kill (через system) из chr30 он не находит процесс chr30.

так что kill pid or allkill pid should be the same.

Но пробовать будем.

Спасибо.
0
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 7
12.01.2017, 15:16  [ТС]
на всяк случай прикрепил игрушечные файлы
Вложения
Тип файла: txt chr15.txt (1.4 Кб, 10 просмотров)
Тип файла: txt chr30.txt (1.5 Кб, 2 просмотров)
Тип файла: txt chr45.txt (1.4 Кб, 2 просмотров)
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
12.01.2017, 19:11
Лучший ответ Сообщение было отмечено Croessmah как решение

Решение

Цитата Сообщение от Vasilich_88 Посмотреть сообщение
Что подскажете?
Забыть про system и использовать связку fork + exec[*] + waitpid.
Можно будет и pid получить убиения процесса и дождаться завершения, и даже отсчитать 30 секунд до момента завершения.
man страницы:
fork: http://man7.org/linux/man-pages/man2/fork.2.html
семейство exeс[*]: http://man7.org/linux/man-pages/man3/exec.3.html
waitpid: http://man7.org/linux/man-page... pid.2.html
Примеры есть внутри.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.01.2017, 19:32
Цитата Сообщение от Vasilich_88 Посмотреть сообщение
хотя ps af выдает в списке chr30
Там есть колонка status (или как-то так называется), наверняка процесс находится в состоянии зомби

Цитата Сообщение от DrOffset Посмотреть сообщение
Забыть про system и использовать связку fork + exec[*] + waitpid
+1
system можно использовать только для того, чтобы что-то на коленке по быстрому сделать. В реальной жизни его никто не использует
0
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 7
13.01.2017, 10:38  [ТС]
system можно использовать только для того, чтобы что-то на коленке по быстрому сделать. В реальной жизни его никто не использует

- Подозревал подобное.Вопрос ПОЧЕМУ оставим за кадром, хотя любопытно. Спасибо.

В описании FORK настораживает :

fork() creates a new process by \color{red}{duplicating }the calling process.

ТЕ запустив fork в процессе Chr30 получим дочерний chr30 а не желаемый Chr15.

Может posix_spawn?
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
13.01.2017, 12:09
Лучший ответ Сообщение было отмечено Croessmah как решение

Решение

Цитата Сообщение от Vasilich_88 Посмотреть сообщение
ТЕ запустив fork в процессе Chr30 получим дочерний chr30 а не желаемый Chr15.
Да, поэтому и было сказано:
Цитата Сообщение от DrOffset Посмотреть сообщение
использовать связку fork + exec[*] + waitpid
Т.е. fork() создаёт копию текущего процесса, любым наиболее удобным exec'ом дочерний процесс меняется на нужный. А через waitpid() родитель дожидается завершения дочернего процесса.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
13.01.2017, 12:20
Цитата Сообщение от Humanoid Посмотреть сообщение
Т.е. fork() создаёт копию текущего процесса, любым наиболее удобным exec'ом дочерний процесс меняется на нужный
Внутри system (да и везде) делается то же самое. Как-то вот так в unix'ах устроен процесс создания процесса (простите за тавтологию)
0
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 7
13.01.2017, 12:59  [ТС]
Отцы, спасибо, проясняется.

Читал по отдельности форк и экзек и не нравились они мне.

А так-то, ежели вместе, то вроде как и ничего... Буду постигать дальше.

Не прощаюсь,
еще раз спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2017, 12:59
Помогаю со студенческими работами здесь

Как убить процесс?
Подскажите как убить процесс? Желательно любой (вплоть до win.com) Заранее спасиба за ответ

Как убить процесс?
Как убить процесс (скайпа) на C#?

Как убить настырный процесс?
Короче кодил на си, редко такое бывает но моя прога которая выводит привет мир неубивается! Висит значит консольное приложение с выводом...

Как убить изменённый процесс?
Допустим если имя процесса (файла) изменили, то по обычному имени не убить его, как убить изменённый процесс? Попробовал такой способ:...

Как убить процесс из сервиса?
как убить процесс из сервиса? Process procList = Process.GetProcesses(); foreach (Process item in procList) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru