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

С++ для начинающих

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

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

24.03.2011, 14:58. Просмотров 1919. Ответов 2
Метки нет (Все метки)

Здравствуйте,

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

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

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

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

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

Запуск дочернего процесса - C++
Почему второй вариант не запускает дочерний процесс? // Работает CreateProcess(L"programma.exe", L"programma.exe file.txt", ...

Завершение родительского процесса из дочернего - C++
Всем доброго времени суток. Мне нужно из дочернего процесса закрыть родительский, но ничего не выходит. Вот исходник дочернего ...

Как узнать состояние дочернего процесса - C++
Здравствуйте. Есть приложение, которое запускает разные дочерние процессы. Мне нужно узнавать, когда дочернее приложение завершилось. Я бы...

Запуск\остановка цикла по нажатию клавиши - C++
Всем привет! Вопрос как реализовать запуск и остановку цикла в консольном приложении по нажатию клавиши f12?

Запуск/остановка сервайсов под NT/2000 - C++
Привет, может кто-нибудь подскажет как можно программно остановить/запустить любые сервайсы под NT/2000. Что для этого надо знать о...

Запуск процесса - C++
Здравствуйте! Как получить данные из потока stderr и стандартного потока вывода процесса? Вот код: char t1 = "ls"; ...

2
bigredcat
366 / 313 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
25.03.2011, 19:57 #2
Под Windows для уведомления другого процесса можно использовать события или сообщения (смотря как вы хотите реализовать приложения). Для обмена данными использовать, например, именованные каналы или сокеты либо файлы, проецируемые в память (вроде как в Windows разделение данных между процессами базируется на последнем, так что это будет самый быстрый). Про Linux особо ничего не скажу, но знаю, что и там существуют аналогичные механизмы.
0
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 минуты
А вот еще вопрос... В оконных приложения в винде есть очередь сообщений, но у меня приложение консольное, можно ли что то типо очереди сообщений сделать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2011, 15:57
Привет! Вот еще темы с ответами:

Запуск процесса из С++ - C++
Visual Studio 2013 Пишу код для открытия блокнота: #include <stdio.h> #include <windows.h> #include <iostream> using...

Запуск параллельного процесса - C++
Добрый вечер Подскажите пожалуйста Как на СИ++ реализовать параллельный процесс допустим чтобы там проверить нажатие каких либо клавиш....

Отловить запуск процесса - C++
Здравствуйте. Хотелось бы узнать как на c++ можно проверить включение программы(не нужно проверять включена ли она уже) программа должна...

Библиотеки процесса, защита от изменения процесса - C++
Здраствуйте. 1) Как можно получить список библиотек (dll, asi), которые уже загружены в процесс какой-то программы? Мне нужно чекать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru