Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa CreateProcess na racunarima bez Visual Studia

[es] :: C/C++ programiranje :: Problem sa CreateProcess na racunarima bez Visual Studia

[ Pregleda: 2468 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mark432

Član broj: 147995
Poruke: 19
212.200.234.*



Profil

icon Problem sa CreateProcess na racunarima bez Visual Studia05.11.2008. u 10:46 - pre 188 meseci
Imam sledeci problem na racunarima bez Visual Studija:

Pri koriscenju CreateProcess funkcije desava se da se HANDLE ne vraca OS-u iako je CloseHandle pozvan. Da li se neko sretao sa slicnim problemom? CreateProcess pozivam ~nx1000 puta u toku izvrsavanja programa pa ovo predstavlja problem jer u jednom momentu OS nece da dozvoli programu da kreira novi process.

Napominjem jos jednom ovo se desava samo na racunarima koji nemaju VS instaliran.

Hvala unapred
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia05.11.2008. u 19:46 - pre 188 meseci
CreateProcess pokrece eksterni proces ali dalji zivot tog procesa ne zavisi od programa koji ga je kreirao niti od poziva CloseHandle.

Kako se kaze ovde:
http://msdn.microsoft.com/en-us/library/ms724211(VS.85).aspx

Citat:
Closing a thread handle does not terminate the associated thread or remove the thread object. Closing a process handle does not terminate the associated process or remove the process object. To remove a thread object, you must terminate the thread, then close all handles to the thread.


Za eksplicitno zatvaranje aplikacije treba koristiti TerminateProcess mada se to ne preporucuje jer se time prakticno nasilno ubija aplikacija.

Ono sto treba uraditi je sledece:

Pokrenuti process sa CreateProcess i sacekati da se proces sam zatvori pa tek onda krenuti i kreiranje sledeceg ili ako treba pokrenuti vise stvari u isto vreme onda koristiti poseban thread za svaki proces.


Tko leti vrijedi
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia05.11.2008. u 20:12 - pre 188 meseci
njemu je problem sto mu se nagomilavaju alocirani handlovi iako su procesi mozda zavrseni. AKo je child process sam zavrsio posao te ne znacu automatsko zatvaranje proces handlova i ubijanje procesa (zapravo u memoriji ostaje "ljuska" procesa sa nula aktivnih threadova).

@mark432, jel zatvaras OBA handle-a sa CloseHandle(), i za process i za glavni thread? Moras da oslobodis oba handle-a iz PROCESS_INFORMATION strukture.





Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mark432

Član broj: 147995
Poruke: 19
77.46.196.*



Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia05.11.2008. u 20:26 - pre 188 meseci
Nisu bitni procesi koji su kreirani. Broj handle-ova raste za proces koji kreira ~nx1000 procesa (u rasponu od 24h), svaki put kad se proces kreira i ne opada. Jedini handle-ovi koji se stvaraju su oni koji se dobijaju od CreateProcess rutine u PROCESS_INFORMATION strukturi, isti se i zatvaraju sa CloseHandle i ne dolazi do greske pri njihovom zatvaranju. Takodje se proverava i da li je postavljen HANDLE_FLAG_PROTECT_FROM_CLOSE pre poziva CloseHandle.

Sustina je da taj kod radi ispravno (broj handle-ova ne raste) na racunaru sa instaliranim visual studiom, a ne radi na racunaru bez Visual studija (handle-ovi se nagomilavaju).

Ranije sam imao problem sa SideBySide assembly pa sam u manifest file stavio da koristim 8.0.50727.42 verzije. Moguce je da ovde lezi neki problem, nisam bas iskusan sa SideBySide verzijama i koje probleme one mogu da impliciraju.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia06.11.2008. u 19:45 - pre 188 meseci
Da li problem nestane ako se koristi staticki linkovan RTL?
Tko leti vrijedi
 
Odgovor na temu

mark432

Član broj: 147995
Poruke: 19
93.86.31.*



Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia06.11.2008. u 20:03 - pre 188 meseci
Rezultat build-ovanja je DLL, a RTL se staticki linkuje.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia06.11.2008. u 22:35 - pre 188 meseci
Ostaje jedino da se vidi sam kod

Ako bi napravio mikro dll samo sa tom funkcijom i neki exe koji to poziva i tako simulira datu situaciju bilo bi lepo da to prilozis sa izvornim kodom pa da pogledamo.


BTW takodje ne bi bilo lose reci i koji kompajler, verzija SP, koji OS itd.

Tko leti vrijedi
 
Odgovor na temu

mark432

Član broj: 147995
Poruke: 19
93.86.86.*



Profil

icon Re: Problem sa CreateProcess na racunarima bez Visual Studia08.11.2008. u 23:04 - pre 188 meseci
Predlog da napravim exe koji poziva moj dll je bio od velike pomoci. Hvala vam.

Greska nije bila u mom kodu, niti je povezana sa SideBySide assembly.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem sa CreateProcess na racunarima bez Visual Studia

[ Pregleda: 2468 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.