c ++ - Rør mellem to konsol applikationer?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg røre mellem to separate konsolprogrammer, der kører i forskellige konsolvinduer?


f.eks. Jeg vil gerne gøre noget svarende til:


ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif - | vlc -


Jeg vil dog gerne gøre det fra to separate vinduer, som ikke virker, jeg tror det skyldes, at standard ud er lokal til cmd windows.


cmd vindue 1:


ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif -


cmd vindue 2:


vlc -


Er der nogen måde at opnå dette programmatisk? Hvad gør | præcist bag kulisserne?

Bedste reference


Hvad der gøres, er at forbinde stdout af den første proces til stdin i den anden proces, du kan gøre dette programmatisk. For et eksempel se følgende SO post:


Hvordan opsætter man et rør mellem to barn processer i Win32?


Hvis du vil se statusudgangen fra begge programmer (STDERR), kan du omdirigere dette til en anden fil eller læse den programmatisk.

Andre referencer 1


Der er ingen måde. | Rør udgangen af ​​en kommando ind i stigen i en anden proces.

Andre referencer 2


Prøv at skrive to wrapper-processer, der kalder de andre processer, og bruge navngivne rør til at omdirigere data.


http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx[6]