Форум программистов, компьютерный форум CyberForum.ru

Запуск и остановка дочернего процесса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
AntonDSD
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 8
24.03.2011, 14:58     Запуск и остановка дочернего процесса #1
Здравствуйте,

Есть у меня программа, где нечто выполняется в бесконечном цикле. Есть программа, которая первую запускает. Причем вторая должна послать некий сигнал в перву, после которого та должна выйти и бесконечного цикла, сделать необходимые действия и завершится.

Все это дело должно быть кроссплатформенно... Если под линукс я еще хоть как то представляю как это сделать, через сигналы там и т.п. В винде я только знаю как запустить дочерний процесс и все.

Вообщем прошу просто указать мне с помощью чего и как обычно делаются такие вещи в линуксе и винде? Я думаю такая задача не редкость все таки...

Плюс вторая программа должна еще и назначать первой поток вывода (например первыя будет выводить логи в файл или на экран второй).

Накидал схему может понятнее танет, ссылка ниже:
Миниатюры
Запуск и остановка дочернего процесса  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 14:58     Запуск и остановка дочернего процесса
Посмотрите здесь:

завершение родительского процесса из дочернего C++
Запуск/остановка сервайсов под NT/2000 C++
C++ Запуск параллельного процесса
Запуск процесса C++
Отловить запуск процесса C++
C++ Запуск\остановка цикла по нажатию клавиши
C++ Доступ к структуре из дочернего класса
C++ Запуск процесса из С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
25.03.2011, 19:57     Запуск и остановка дочернего процесса #2
Под Windows для уведомления другого процесса можно использовать события или сообщения (смотря как вы хотите реализовать приложения). Для обмена данными использовать, например, именованные каналы или сокеты либо файлы, проецируемые в память (вроде как в Windows разделение данных между процессами базируется на последнем, так что это будет самый быстрый). Про Linux особо ничего не скажу, но знаю, что и там существуют аналогичные механизмы.
AntonDSD
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 8
28.03.2011, 15:57  [ТС]     Запуск и остановка дочернего процесса #3
Спасибо за ответ, но это не совсем то что мне нужно...

Про методы IPC я знаю.. у меня вопрос можно ли без них обойтись...
В линуксе как я понял можно определенному поцессу послать сигнал и обработать его.
Но как сделать в винде.

Вот псевдокод чего я хочу полчуить.

Родительский процесс:
1) Запустить дочерний
2) Получить его PID
3) Уничтожить процесс

Дочерний:
1) Запуск бесконечного цикла
2) Если получен сигнал о завершении, сделать необходимые действия и завершится

Вот скорее вопрос уже такой можно ли это в винде без IPC реализовать?
Я выяснил, CreateProcess в структуру с информацией заносит PID. Но при вызове TerminateProcess(), дочерний сразу завершается и обработать это не возможно.
Как нибудь подругому можно?

Добавлено через 2 минуты
А вот еще вопрос... В оконных приложения в винде есть очередь сообщений, но у меня приложение консольное, можно ли что то типо очереди сообщений сделать?
Yandex
Объявления
28.03.2011, 15:57     Запуск и остановка дочернего процесса
Ответ Создать тему
Опции темы

Текущее время: 05:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru