|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема
|
Как да свържа 2 процеса?
|
|
Автор |
ebliviq_zaek (zaiko) |
Публикувано | 26.11.08 22:43 |
|
Здр,
Имам процес А и процес Б. Процес А стартира процес Б. Представете си, че пречукам процес А от TaskManager на Windows. Искам когато процес А умре, автоматично да умре и процес Б. Някой знае ли как става това?
Благодаря за всяка помощ.
"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
| |
|
мен понякога като ми остане процес неубиваем който уж се дебъгва (а студиото не знае) просто затварям студиото и процеса умира
NE SUTOR ULTRA CREPIDAM
| |
|
Имаше някакъв сложен танц та да се знае кой на кого къф се пада. Може да е и от начина на стартиране.
Огледай какви параметри имаш при стартиране.
В линукс е по просто - там е малко по сложно ако искаш да не са свързани.
Bеer? Mоre?
| |
|
Ами не става за дума за VS и за дебъгван процес. Става дума за процес който прехвърля част от калкулациите на друг процес. Ако убиеш първия искам и втория да загине. Но примера с VS е добър. Ето че някъде са го направили, само трябва да разбера как.
"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
| |
|
В един от примерите за правих нещо подобно с един глупав скрипт, който следеше процес и го рестартираше, като умре. Идеята беше да стартираш процеса с шел команда, като блокираш. В момента, в който умре или си излезе културно, те разблокира и можеш да си умреш спокойно. Може да си го пуснеш това в друга нишка, че да свършиш някаква истинска работа. А може и да не блокираш, а периодично да проверяваш дали е жив другият процес. Варианти бол.
Иначе с WMI съм сто процента сигурен, че можеш да получиш събитие, когато стартира процес. Най-вероятно има и обратното -- когато умира такъв. Сега това може да не е за всеки -- WMI с PowerShell е песен, но с някой език като C++ сигурно ще умреш в мъки.
| |
|
Какво ще рече 'прехвърля част от калкулациите'? Как става това прехвърляне? Т.е. как си говорят двата процеса?
Тоя дето прехвърля работата ли стартира другия, или ги стартираш ръчно по отделно? По принцип като намре родителският процес, наследникът не умира от самосебе си (това за zaphod го казвам).
Ако са на една машина процесите, един смислен начин е този:
Правиш мутекс с главната програма (и тя е owner), а работната само го отваря (може на таймер да проверява докато не се появи) и да wait-неш в една нишка за тоя мутекс. Като главната програма намре, ша получиш WAIT_ABANDONED и ша си самоубиеш работната.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_Редактирано от Colombino на 27.11.08 01:34.
| |
|
Кой те сложи да ръководиш проекти, при положение, че с два процеса не можеш да се оправиш?
Save the original.
| |
|
Ползвай CreateJobObject Function
CreateProcess Function и AssignProcessToJobObject Function
| |
|
Ми те обикновено такива слагат.
| |
|
В процес А викаш GetCurrentProcessId() и квото ти върне го пращаш като параметър на процес Б. В Б викаш OpenProcess() и получаваш хендъл от идентификатора. После периодично викаш GetExitCodeProcess() и когато спре да ти връща STILL_ACTIVE, значи А е заминал.
| |
|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
|
|
|