Forsæt loop efter system() bliver kørt?

Tags:    c++

Hejsa. Jeg er igang med at kode et program i C++ som skal køres på min externe server. Jeg sender den en socket med værdien "1". Når den så modtager den, så vild en lave en switch() og værdi 1 starter en Counter-Strike: Source server. Og den starter, men problemet er så at når den er startet så holder programmet op med at svare på andre forespørgelser til at jeg har lukket min CS:S server ned igen. Dette sker på Windows.

Her en del af min kode:
Fold kodeboks ind/udKode 


Den looper ikke efter jeg har kørt system(). Eller er der en anden og bedre metode at gøre det på end det jeg har gjort?

-mvh Magnus.



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg er ikke helt sikker, men jeg mener at jeg har set at system() starter et program og venter til at programmet har kørt, og så forsætter med at køre din kode. Derfor kunne du måske prøve at køre programmerne på en anden måde: http://www.codeguru.com/forum/showthread.php?t=302501



Du burde kunne løse problemet ved at bruge kommandoen "start" til at starte programmet, noget i stil med:

"cmd start \"\" D:/srcds/srcds.exe -game cstrike -console +map de_dust2"




Hjalp ikke, så lukker den hele programmet ned og serveren starter ikke :(



Jeg forstår ikke hvorfor det ikke skulle virke, og slet ikke hvorfor det skulle få programmet til at gå ned.

Du kan også forsøge dig med CreateProcess:
http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx



Jeg er ikke helt sikker, men jeg mener at jeg har set at system() starter et program og venter til at programmet har kørt, og så forsætter med at køre din kode. Derfor kunne du måske prøve at køre programmerne på en anden måde: http://www.codeguru.com/forum/showthread.php?t=302501

Det var nemlig også min teori, jeg vil lige prøve dit link :=)



Jep nu startede min server og den modtager nye forespørgelser hele tiden :D Tusinde tak :D



Nu da jeg er igang, hvordan kan jeg så lukke det program ned jeg har startet, hvis jeg nu sender en ny socket? Jeg brugte.. CreateProcess();



TerminateProcess:
http://msdn.microsoft.com/en-us/library/ms686714%28VS.85%29.aspx

handlen får du fra CreateProcess. Dette er dog en meget hårdhændet måde at afslutte et program.



Nu da jeg er igang, hvordan kan jeg så lukke det program ned jeg har startet, hvis jeg nu sender en ny socket? Jeg brugte.. CreateProcess();


sockets er ikke noget man sender. Det er et medium som man sender data igennem...lidt ala en telefon. Du sender ikke en telefon til din mutter (eller måske gør du). Du sender en besked gennem telefonen.



Nu da jeg er igang, hvordan kan jeg så lukke det program ned jeg har startet, hvis jeg nu sender en ny socket? Jeg brugte.. CreateProcess();


sockets er ikke noget man sender. Det er et medium som man sender data igennem...lidt ala en telefon. Du sender ikke en telefon til din mutter (eller måske gør du). Du sender en besked gennem telefonen.

Jeg sender det igennem en socket :P



t