windows - Omdirigerer C ++ Program indhold til cmd.exe

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er forpligtet til at kalde et hjælpeprogram (special.exe) tusindvis af gange med bestemte parametre, som er besluttet inden for mit C ++-program.


I øjeblikket bruger jeg CreateProcess() til at køre hjælpeprogrammet (special.exe) og bruger rørhåndtag for at få resultaterne tilbage. Dette er inden for en loop. Så effektivt har mit program et stort overhead, da det skaber og ødelægger tusindvis af børneprocesser.


Pseudo-kode (i øjeblikket):


for(i=0; i<n; i++)
{ 
    i) set all necessary attr for createprocess()
    ii) str = "D:\special.exe " + to\_string(i)
   iii) CreateProcess(NULL, str(), ...)
    iv) collect back results
    iv) close all handles
}


Nu, hvad jeg har til hensigt at gøre, er at bruge CreateProcess() for at åbne cmd.exe en gang og derefter køre hjælpeprogrammet (special.exe) derfra, når det er nødvendigt. Jeg vil gerne vide, om der er en måde at overføre strenge fra mit hoved C ++ -program til barnets cmd.exe -proces.


Pseudo-kode (Intent):


i) set all necessary attr for createprocess
ii) CreateProcess(NULL, "cmd.exe", ...)

for(i=0;i<n; i++)
{
    iii) str = "special.exe " + to\_string(i)
    iv) pass str to cmd.exe process and execute
    v) collect back results
}
vi) close all handle


Jeg tror, ​​at dette kan være en hurtigere tilgang, da den beskæftiger sig med mindre processkabelser.


Er denne tænkning rigtig? Og er det muligt? Del venligst dine indsigter og nogle prøvekoder som tips, hvis det er muligt.


Tak!

Bedste reference