![]() |
|
|
![]()
|
|
| froex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 6.3.2009 Репутация: нет Всего: нет |
В линуксе есть функция fork() для создания копии процесса. Также есть функция exec() для замены процесса другим. Есть ли эквиваленты этих функций в C++ Builder?
|
|||
|
||||
| froex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 6.3.2009 Репутация: нет Всего: нет |
Нашел CreateProcess - сейчас буду испытывать, то или не то (описание функции в msdn).
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
froex, камрад - когда говоришь Билдер - подрузамеваем VCL. В VCL - я не встречал функций требуемых тебе. Ибо они есть в WinAPI.
CreateProcess - одна из них - пожалуй это самый лучший для тебя вариант. Есть еще ShellExecute, WinExec. Не стоит забывать и про стандартную system. |
|||
|
||||
| froex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 6.3.2009 Репутация: нет Всего: нет |
А как мне лучше организовать следующее: Запускаю консольное приложение. Оно запускает исполняемый файл VCL-приложения. Но сама консоль еще работает. Когда закрывается VCL-приложение, то консольное приложение не должно закрываться, а когда закрывается консольное приложение, то запущенное VCL-приложение закрывается, если есть.
Т.е. для обмена сообщениями мне надо хранить pid созданного процесса. В линуксе все просто: pid=fork(), далее сверяем и т.п. Если порожденный процесс, то заменял его с помощью exec(). Меня интересует, как создать именно так, чтобы сохранилась связь и нельзя было пользоваться дочерним приложением без родительского. Это сообщение отредактировал(а) froex - 14.5.2009, 08:48 |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
Когда закрывается VCL-приложение, то консольное приложение не должно закрываться,
Это сообщение отредактировал(а) Dmi3ev - 14.5.2009, 08:58 -------------------- |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
froex, Однозначно использовать CreateProcess. Внимательно почитай про эту функцию. Информации в нете полно.
|
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
посмотри тут еще, там есть про pid
http://licrym.org/samouch/7/03/index.html Добавлено через 1 минуту и 46 секунд
да, там флагов полно, помнится... -------------------- |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| froex |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 6.3.2009 Репутация: нет Всего: нет |
Как приду домой, то почитаю
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Это получится автоматом
А это надо делать. Нужно сообщить VCL приложению, что консольное закрылось. Есть 2 варианта:
|
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
а не проще ли - зная дескриптор дочернего процесса (благодаря PROCESS_INFORMATION) вызвать TerminateThread и спокойно завалить этого мерзавца?
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |