Hej! Varför använder du system från början? När jag kör med alt 1 så blir meddelandet detta Alltså, om foo_bar råkar vara ett kommando som Windows tillhandahåller (säg copy eller liknande), så finns den nästan alltid i WinAPI som ett anrop.system() fundering. Få den minnas föregående kommandon?
Funderar på hur man ska kunna få detta fungera.
(alt 1)
[b]
system("C:");
system("cd \"C:\\foo\\bar\\\"");
system("\"foo_bar.exe\" -line1 -line2");
[/b]
Jag kan ju skriva följande (alt 2)
[b]system("\"C:\\foo\\bar\\foo_bar.exe\\\" -line1 -line2);[/b] men då krashar programmet jag startar.
Vill alltså starta en process med parametrar och vänta till den avslutas innan nästa kod stycke körs. Eller om man kan få system() minnas föregående kommando och sen "flusha"?
Hoppas jag gjort mig tydlig här ^^
Tack!Sv: system() fundering. Få den minnas föregående kommandon?
Det ser ut som du kör windows, då är det nästan alltid fördelaktigt att använda WinAPI istället, om du vill, säg, kopiera en fil.
Om du vill starta ett externt program så kan du lika gärna använda ShellExecute från WinAPI.
I övrigt ska alt 1. fungera, vad blir det för fel?
Prova att lägga in grejer i strängar först och skriva ut dem så att du ser att de blir rätt.
Och skulle det ändå inte gå finns det andra sätt att byta Current Directory. Kolla efter Change Drive och Change Directory i WinAPI.Sv:system() fundering. Få den minnas föregående kommandon?
"'foo_bar.exe' is not recognized as an internal or external command, operable program or batch file." och sökvägen är rätt.
Och med alt 2 så krashar vissa program jag startar, bara vissa.
Men hur gör jag med WinAPI då? Om jag vill starta en process med argument och vänta tills den avslutats innan nästa kod stycke körs då?
Är rätt ny på C++Sv: system() fundering. Få den minnas föregående kommandon?
ShellExecute är annars anropet du ska kolla på.
Om det här bara är för att lära dig kan jag rekommendera att du gör något annat. Detta hamnar under kategorin krångel utan någon direkt nytta
Men du kan ersätta de två första anropen med anrop till SetCurrentDirectory, och sen kolla på om det hamnade rätt. MSDN är platsen du ska leta på:
http://msdn2.microsoft.com/en-us/library/aa364934.aspx (Det verkar dock ligga nere nu?)