Ein Programm aus einem C++-Programm heraus starten und wieder beenden



  • Hallo,

    ich würde gerne ein zweites Programm von meiner Applikation heraus
    starten und genau es zu einem bestimmten Zeitpunkt wieder beenden.

    Das starten funktioniert sicherlich mit popen("./prog",r).

    Aber wie kann ich genau dieses Programm wieder beenden?
    Irgendwie muss ich von diesem Programm die Prozess-ID herausfinden
    und dann per kill -9 killen.

    Über Tipps wäre ich sehr dankbar.

    Viele Grüße



  • mit man: vfork/man: execl sollte das einfach sein

    grob sollte das ungefähr so aussehen:

    pid_t pid = vfork();
    if(pid < 0) {
      perror("vfork");
    }
    else if(pid == 0) {
      if(execl("prog", "prog", 0x0) == -1) {
        perror("execl");
        _exit(1);
      }
      _exit(0);
    }
    
    sleep(10); // ...
    
    kill(pid, SIGTERM);
    sleep(1);
    if(waitpid(pid, 0x0, WNOHANG) != pid) {
      kill(pid, SIGKILL);
    
    }
    

    wenn du eine pipe willst, musst du die mit man: pipe(2) da noch einbauen.


Anmelden zum Antworten