c - CreateProcess og capture stdout

Indlæg af Hanne Mølgaard Plasc

Problem



Når du bruger CreateProcess til at køre et andet program, hvad er den anbefalede måde at fange stdout på? Det vil sige at tage uanset det andet program, der blev udskrevet til stdout, og ender med det i en matrix, hvor det første program kan analysere det?


Begge programmer er lige Win32 programmer skrevet i C, ingen fancy ting.

Bedste reference


Det korte svar er at oprette et anonymt rør, der indstiller hStdOut/hStdErr og dwFlag medlemmerne af STARTUPINFO strukturen i overensstemmelse hermed og har CreateProcess() armer håndtaget til rørets skrivende ende. Glem ikke at lukke dit skrifthåndtag på dit rør, så du kan læse fra rørets læserhåndtag i en loop, indtil det fejler med en ERROR\_BROKEN\_PIPE fejl.


MSDN giver et detaljeret eksempel på dette:


Oprettelse af en børneproces med omdirigeret indgang og udgang [7]


Du er ikke den første person til at gøre dette, der skal være masser af eksempler kode og duplikat spørgsmål her på StackOverflow.