Toon posts:

[Win32/C++] CreateProcess

Pagina: 1
Acties:

Verwijderd

Topicstarter
Kan iemand mij vertellen of je met de functie CreateProcess i.p.v. een commando, ook een methode kunt aanroepen om te executeren? En zo ja, hoe? :)

De bedoeling is om binnen dezelfde applicatie d.m.v. CreateProcess een ander process te creëren, wat op zijn beurt weer een aantal threads creërt die verschillende handelingen uitvoeren.

Of is het zo dat die andere processen perse in een andere exe file moeten staan? :?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Een process onder Win32 is per definitie verbonden aan een executable, en CreateProcess kan alleen een proces dat met name genoemd is starten.

Maar wat wil je exact? Want ik snap niet echt wat je nu allemaal van plan bent.... hoezo een 'methode' executeren? :?

Professionele website nodig?


Verwijderd

Topicstarter
Hehe, was al bang dat ik het een beetje vaag uitlegde :)

Ik heb een file genaamd main.cpp
Ik vraag mij af of het mogelijk is om binnen deze .cpp file
d.m.v. een parameter voor CreateProcess een andere (zelfgeschreven functie) aan te roepen, welke dat process uitvoert

hoop dat dit ietsje duidelijker is :X

Als ik het goed begrijp dan is het zo dat meerdere processen dezelfde exe file kunnen uitvoeren, maar dan ook precies hetzelfde doen. En dat een exe file meerdere processen kan hebben die elk iets anders doen (maar dan wel allemaal een andere exe file executeren)?

Als dit bovenstaande klopt dan is het antwoord op mijn eigenlijke vraag dus negatief

Zoals je ziet vind ik het allemaal nogal verwarrend ;)

  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Waarom maak je het zo onwijs ingewikkeld voor jezelf en gebruik je geen DLL's? :?

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Zoek je niet gewoon CreateThread? :?

Professionele website nodig?


Verwijderd

Topicstarter
Omdat ik geen DLL mag gebruiken in mijn practicum :+

Verwijderd

Topicstarter
curry684 schreef op 16 december 2003 @ 12:58:
[...]

Zoek je niet gewoon CreateThread? :?
CreateThread zal ik idd ook gaan gebruiken om meerdere threads te maken.
Maar ik moet eerst een process maken dat een ander proces creërt, welke deze threads maakt

en als ik het goed begrijp dan moet dit laatste process in een andere exe file staan, toch?

[ Voor 13% gewijzigd door Verwijderd op 16-12-2003 13:01 ]


  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Hmmm... en CreateRemoteThread dan? of is dat niet wat je bedoeld? :o

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 16 december 2003 @ 13:00:
[...]
CreateThread zal ik idd ook gaan gebruiken om meerdere threads te maken.
Maar ik moet eerst een process maken dat een ander proces creërt, welke deze threads maakt

en als ik het goed begrijp dan moet dit laatste process in een andere exe file staan, toch?
Maar het nut van het aparte proces ontgaat me nog steeds volledig :/

Om je verhaal erbij te grijpen:
Als ik het goed begrijp dan is het zo dat meerdere processen dezelfde exe file kunnen uitvoeren, maar dan ook precies hetzelfde doen.
Klopt, als jij 20 keer dubbelklikt op Notepad heb je 20 keer notepad.exe lopen die allemaal een andere file kunnen editen maar dezelfde 'image' gebruiken op een andere plaats in het geheugen.
En dat een exe file meerdere processen kan hebben die elk iets anders doen
Klopt, ieder proces mag zoveel externe processen opstarten als de systeemresources hem toestaan.
(maar dan wel allemaal een andere exe file executeren)?
Als jij dat wil kun je 500 processen starten die allemaal een andere executable-image gebruiken ja.

Ik mis alleen het punt van de meerdere executables. Volgens mij ben je niets van plan dat niet gewoon met threads te doen is....

Professionele website nodig?


  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Verwijderd schreef op 16 december 2003 @ 12:58:
Omdat ik geen DLL mag gebruiken in mijn practicum :+
En geef eens heel concreet aan wat nou precies de bedoeling is van dat practicum dan... we kunnen hier wel een hele poos gaan gissen maar ik heb wel meer te doen vandaag ;-)

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


Verwijderd

Topicstarter
het klopt dat het allemaal simpel is op te lossen door threads.

het punt is alleen dat het een practicum opdracht betreft, waarbij het gaat op synchronisatie van threads van meerdere processen, waarbij elk proces iets anders doet.

En aangezien elk proces iets anders doet, dan moet volgens mij elk process dus een andere exe file executeren. (waardoor ik deze exe files dus moet maken, welke de functies bevatten die ik wil laten executeren door een appart proces)

ik denk dat ik het nu begrijp en de antwoord op mijn vraag is dus dat ik meerdere files moet aanmaken. Correct me if i'm wrong

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 16 december 2003 @ 13:25:
ik denk dat ik het nu begrijp en de antwoord op mijn vraag is dus dat ik meerdere files moet aanmaken. Correct me if i'm wrong
Waarom niet andere command line parameters, en in de executable afhankelijk de eerste parameter iets anders doen? Scheelt je stukken op de maintainability, 1 source en 1 executable.

Professionele website nodig?


Verwijderd

Topicstarter
mindcrash schreef op 16 december 2003 @ 13:16:
[...]


En geef eens heel concreet aan wat nou precies de bedoeling is van dat practicum dan... we kunnen hier wel een hele poos gaan gissen maar ik heb wel meer te doen vandaag ;-)
begrijp ik ;)

Op deze link staat het practicum

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Inleveren: uiterlijk 15 december 2003
Lekker op tijd begonnen he 7(8)7

edit:
wel leuke opdracht trouwens :)

[ Voor 22% gewijzigd door curry684 op 16-12-2003 13:34 ]

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Had je op http://www.icim.fnt.hvu.nl/docent/mwensink/KWipr1/KWipr.html ook al in grote rode letters zien staan dat uitwerkingen of toevoegingen na 15 december absoluut niet meer in behandeling worden genomen?

Professionele website nodig?


Verwijderd

Topicstarter
curry684 schreef op 16 december 2003 @ 13:38:
[...]

Had je op http://www.icim.fnt.hvu.nl/docent/mwensink/KWipr1/KWipr.html ook al in grote rode letters zien staan dat <span style="color:red">uitwerkingen of toevoegingen na 15 december absoluut niet meer in behandeling worden genomen</span>?
ja, maar ik wil het practicum zowieso maken omdat de stof tenslotte op het tentamen terugkomt

  • mindcrash
  • Registratie: April 2002
  • Laatst online: 22-11-2019

mindcrash

Rebellious Monkey

Ik heb heel even snel dat practicum doorgelezen en zover ik heb begrepen ruikt dit gewoon naar standaard multitasking. Dus een aantal threads draaien binnen je applicatie en die op elkaar afstemmen. :)

"The people who are crazy enough to think they could change the world, are the ones who do." -- Steve Jobs (1955-2011) , Aaron Swartz (1986-2013)


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

mindcrash schreef op 16 december 2003 @ 13:58:
Ik heb heel even snel dat practicum doorgelezen en zover ik heb begrepen ruikt dit gewoon naar standaard multitasking. Dus een aantal threads draaien binnen je applicatie en die op elkaar afstemmen. :)
Dan heb je niet goed doorgelezen :)

Er worden wel degelijk 3 uniek verschillende processen gevraagd, 1 ervan is de master-proces welke de andere 2 lanceert, de 2e bevat continue 3 circulating worker threads en de 3e bevat een variable sized threadpool met klanten.

Professionele website nodig?


Verwijderd

Topicstarter
Er zijn idd 3 processen.

klopt het dan, op basis van de practicum gegevens dat het klant proces en het 'workers' proces ieder een andere exe file moeten executeren?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 16 december 2003 @ 14:04:
Er zijn idd 3 processen.

klopt het dan, op basis van de practicum gegevens dat het klant proces en het 'workers' proces ieder een andere exe file moeten executeren?
Sja in de practicumbeschrijving lees ik vrij letterlijk dat je een Corleone.exe, een Clienti.exe en een Pizzeria.exe moet maken ja. Het maakt de IPC ook een stukje complexer daar je daardoor over process boundaries moet (en dus aan Named Events e.d.)

* curry684 vind het echt een leuke en goede opdracht. Zou ik wel een beoordeling krijgen als ik nu nog in zou sturen? :D :Y)

Professionele website nodig?


Verwijderd

Topicstarter
* curry684 vind het echt een leuke en goede opdracht. Zou ik wel een beoordeling krijgen als ik nu nog in zou sturen?
Het is inderdaad een leuke opdracht. En zoals je kunt merken voor mij erg leerzaam
Ik heb nu een helder beeld wat de bedoeling is, dus ik kan aan de slag!

Thanx for the help _/-\o_

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Heej wensink. Die is over het algemeen niet zo blij met te laat ingeleverde opdrachten :P
(jammer, windows programmeren heb ik nooit gehad...)

Maar heb je wel een voldoende voor je practicum dan? Anders heeft het niet eens nut om je tentamen te maken :)

[ Voor 29% gewijzigd door .oisyn op 16-12-2003 15:50 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • schoene
  • Registratie: Maart 2003
  • Laatst online: 15:12
curry684 schreef op 16 december 2003 @ 14:06:

Sja in de practicumbeschrijving lees ik vrij letterlijk dat je een Corleone.exe, een Clienti.exe en een Pizzeria.exe moet maken ja. Het maakt de IPC ook een stukje complexer daar je daardoor over process boundaries moet (en dus aan Named Events e.d.)
Er staat wel boven "Schrijf een Windows programma". Dus ik denk dat ie 1 programma moet maken die bestaat uit 3 Hoofdthreads, en die hoofdtrheads starten dan weer de andere op.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

schoene schreef op 16 december 2003 @ 16:23:
[...]


Er staat wel boven "Schrijf een Windows programma". Dus ik denk dat ie 1 programma moet maken die bestaat uit 3 Hoofdthreads, en die hoofdtrheads starten dan weer de andere op.
Een programma kan wel degelijk uit 300 processen bestaan echter. Programma is een groter geheel.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Aan de andere kant is een proces weer een bepaalde taak, en niet per se een win32 "process"

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Verwijderd schreef op 16 december 2003 @ 13:29:
[...]


begrijp ik ;)

Op deze link staat het practicum
Op hogeschool zuid(heerlen) kregen wij deze opdracht ook. Althans in principe hetzelfde. Alleen een aparte .obj en een header - file. Dus hoefden we in principe niet direct de windows aan te spreken wat natuurlijk de boel ietsje vergemakkelijkte, maar verders een hele leuke opdracht. En natuurlijk met knoflooksaus altijd beter :Y)

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

.oisyn schreef op 16 december 2003 @ 16:39:
Aan de andere kant is een proces weer een bepaalde taak, en niet per se een win32 "process"
De exacte stelling is: "Proces CorLeone is een proces dat een aantal synchronisatiemiddelen klaarzet voor de andere twee processen en vervolgens die processen creëert."

Als ie in deze zin met 'proces' geen 'Win32 Process' bedoelt is het een sjaak die geen les zou mogen geven 8)7

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry684 schreef op 16 december 2003 @ 16:58:
Als ie in deze zin met 'proces' geen 'Win32 Process' bedoelt is het een sjaak die geen les zou mogen geven 8)7
dat sowieso :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

koli-man schreef op 16 december 2003 @ 16:55:
[...]


Op hogeschool zuid(heerlen) kregen wij deze opdracht ook. Althans in principe hetzelfde. Alleen een aparte .obj en een header - file. Dus hoefden we in principe niet direct de windows aan te spreken wat natuurlijk de boel ietsje vergemakkelijkte, maar verders een hele leuke opdracht. En natuurlijk met knoflooksaus altijd beter :Y)
uhm, dat lijkt me toch essentieel anders, omdat je dan gewoon gebruik kan maken van shared memory, wat bij verschillende processes niet zomaar het geval is

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Mutex, zoek daar maar op....
In windows kun je "Name-based" mutexen maken, die voor het hele systeem gelden, en dus een manier om tussen processen te kunnen synchroniseren.

Verder heb je dingen als Critical Sections, e.t.c. dus leef je uit...

Tis vrij simpel om in een exe twee andere exe's op te starten, terwijl je "master" applicatie zo'n mutex aanmaakt, en op een of andere manier de handle naar dat object door te geven... echter dat is in mijn ogen hetzelfde als 2 thread's aanmaken die je die mutex handle meegeeft, dus wat het nut is van die 2 executables is mij niet helemaal duidelijk, maargoed.

MSDN Libraries:
"Multiple processes can have handles to the same event, mutex, semaphore, or timer object, so these objects can be used to accomplish interprocess synchronization"

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

.oisyn schreef op 16 december 2003 @ 17:01:
[...]


uhm, dat lijkt me toch essentieel anders, omdat je dan gewoon gebruik kan maken van shared memory, wat bij verschillende processes niet zomaar het geval is
Nee volgens mij niet, want er werden threads gecreeerd en daarbij kon je met alle beschikbare synchrone en asynchrone middelen je doel bereiken. Maar die zogenaamde files werden NTK files genoemd(ik neem dan aan dat ze daarmee NTKernel mee bedoelen.

[ Voor 36% gewijzigd door koli-man op 16-12-2003 17:10 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Uhm bedankt voor je inhoudelijk zeker correcte bijdrage, maar kun je de volgende keer even het topic eerst lezen want ik mis de relevantie voor de vraag en de discussie... :?

Professionele website nodig?

Pagina: 1