Mit C++ Prozesse killen



  • Morgen!

    Eigentlich bin ich ja unter Windows zuhause, aber ich bräuchte eine Lösung wie ich mit C++ Code unter Linux Prozesse beenden kann und andere Dinge durchführen kann, z.B. sowas:

    killall prozess123
    sleep 2
    cd ../TMPDIRS
    rm -rf BLA

    Windows bietet dafür ja system() an, was gibt's da für Linux?



  • auch.
    [quote=linux]
    SYNOPSIS
    #include <stdlib.h>

    int system(const char *command);

    DESCRIPTION
    system() executes a command specified in command by calling /bin/sh -c command, and returns after the
    command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and
    SIGQUIT will be ignored.
    [/quote]
    unter linux tippe "man system" ein, dann kriegste die hilfe. das läßt sich auch gut benutzen, um zu gucken, ob überhaupt was da ist. alles wichtige ist unter win und linux nämlich gleich.



  • Unter Unix/Linux helfen Dir bei solchen Fragen die kleinen aber feinen Programme apropos und man.



  • bleibt ein Problem

    cd ../TMPDIRS
    rm -rf BLA

    Wie bekomme ich das in einen Systemaufruf? Ansonsten geht doch eine konsole auf (oder shell 🙄 ), wechselt den pfad und schließt sich. Dann geht eine neue auf und führt "rm -rf BLA" aber dann nicht da auf wo sie es sollte.

    Ich hoffe das war relativ klar...



  • Hi Caster,

    um die Systemaufrufe ohne die lästige Shell zu machen, kannst du execve() benutzen. Die genaue Syntax wieder der manpage entnehmen. Damit kannst du Befehle direkt starten, ohne die Shell. Um das Verzeichnis zu wechseln, kannst du aber auch einfach ein chdir() machen. Dazu gibt es auch eine manpage. Damit wird, wie unter M$, der Ausführungspfad deines Programms geändert.
    Musst mal schauen, was für die am besten ist.

    Gruß Mea

    PS: Solltest du in Zukunft öfter mit Linux-Programmierung zu tum haben, kann ich dir wärmstens das Buch "Linux-Programmierung" von Richard Stones und Neil Matthew empfehlen (Link zu Amazon)


Anmelden zum Antworten