system() befehl



  • hy leute da ich micht in c++ nicht besonders gut auskenne und das meiste wissen aus der dev c++ hilfe habe kann es sein, dass mein problem anders gelöst werden muss.
    also ich habe winxp und möchte mir ein c++ programm schreiben welches skype startet (von der cmd aus). dazu verwende ich den folgenden code

    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    
    int main(){
    system("c:&&cd Programme&&cd Skype&&cd Phone&&skype /nosplash /minimized")
    cout<<"ok";
    system("pause");
    
    return 0;
    }
    

    soweit so gut, es startet das Programm Skype einwandfrei nur geht es dan im Programmcode nicht weiter. erst sobald ich das Fenster schließen (x rechts oben) drücke gehts weiter, dann steht ok auf der ausgabe ok.

    vielen dank im voraus
    ps: bin noch ein noob also bitte nicht zu schwierig erklären 😉



  • Du hast das genau richtig erkannt. system() wartet einfach so lange bis der aufgerufene Prozess fertig ist. Der Hintergrund davon ist, dass es nicht nur Betriebssysteme gibt, die mehrere Prozesse gleichzeitig (multithreading) verarbeiten können.
    Wenn du sowas machen willst, dann musst du betriebssystemabhängige Funktionen zum Ausführen von Programmen verwenden. Bei Windows ist das die WinAPI. Am besten fragst du da mal nach einer geeigneten Funktion oder ich kann auch den Thread hier dort hin verschieben.

    Noch was:
    system("PAUSE") ist die denkbar schlechteste Lösung, um eine Tastatureingabe vom Benutzer zu erzwingen. Benutze am besten die dafür vorgesehenen Funktionen. Z. B. ganz einfach das cin ;).



  • achso ich verstehe, nun ja dan hät ich non eine kleine bitte. könntest du mir nicht einen einfachen kurzen beispielcode zeigen wo ein programm gestartet wird?

    übrigens danke nochmal



  • Einfach und kurz - Multithreading? Win Windows??
    Naaja, also im Linux würdest du einfach nur nen fork() benutzen, aber soo einfach machts dir m$ nicht..
    Allerdings gibts in einigen Libs (beispielsweise die SDL) relativ simple Befehle für Multithreading..


Anmelden zum Antworten