Programmaufruf



  • perl-liebhaber schrieb:

    Hallo,
    ich will durch mein Programm ein anderes Programm starten! Mit Perl sähe das ungefähr so aus: system("Programmname");

    Gibt es dafür in C++ eine vorgesehene Funktion oder muss ich mir da erst selbst was zusammen reimen?

    Hi,

    system(const char *); gibt es auch unter C/C++, es allerdings nicht Standard. Die
    Funktion ist in der <cstdlib> deklariert.

    Aber Vorsicht, wenn du mit Parametern vom User her arbeitest, kann system ein sehr
    grosses Sicherheitsrisiko sein.

    mfg
    v R



  • virtuell Realisticer schrieb:

    allerdings nicht Standard.

    Doch.



  • Bashar schrieb:

    virtuell Realisticer schrieb:

    allerdings nicht Standard.

    Doch.

    Laut meiner Doku nicht, ist Bestandteil von POSIX und WIN32, bei ANSI-C sowie
    ANSI-C++ ist es nicht eingetragen.

    mfg
    v R



  • man 3 system schrieb:

    CONFORMING TO
    ANSI C, POSIX.2, BSD 4.3

    wobei man eigentlich in den Standard gucken sollte:

    C99 Draft schrieb:

    7.20.4.5 The system function



  • Bashar schrieb:

    wie in Perl

    #include <cstdlib>
    ...
    std::system("foo");
    

    funzt nicht!
    Error:
    E:\Programme\Microsoft Visual Studio\MyProjects\trztrz\wer.cpp(6) : error C2653: 'std' : is not a class or namespace name
    E:\Programme\Microsoft Visual Studio\MyProjects\trztrz\wer.cpp(6) : warning C4129: 'c' : unrecognized character escape sequence
    Error executing cl.exe.
    ...



  • # include <iostream.h>
    # include <cstdlib>

    void main()
    {
    std::system("C:\command.com");
    }

    so sieht mein prog aus..



  • Hi,

    dein Programm sollte so aussehen:

    # include <iostream> //genau wie <cstdlib> ohne .h
    # include <cstdlib>
    
    int main() //void main ist falsch
    {
        std::system("C:\command.com");
        return 0; //programm ordnungsgemaess verlassen
    }
    

    mfg
    v R



  • Wenn das nicht geht ist dein Compiler zu alt. Versuchs mal so, das ist nicht 100% State of the art, aber dürfte funktionieren:

    #include <stdlib.h>
    
    int main() {
      system("c:\\command.com");
      return 0;
    }
    

    Wieso nennst du dich eigentlich perler? Wenn du Perl kennen würdest, müsstest du eigentlich wissen, dass man Backslashes in Strings escapen muss.



  • Bashar schrieb:

    man 3 system schrieb:

    CONFORMING TO
    ANSI C, POSIX.2, BSD 4.3

    wobei man eigentlich in den Standard gucken sollte:

    C99 Draft schrieb:

    7.20.4.5 The system function

    Ich gebe mich geschlagen 😉

    Hab mich zu sehr auf die Borland-Hilfe verlassen, werde es naechste mal gleich im
    Draft nachschauen.

    mfg
    v R



  • Bashar schrieb:

    Wieso nennst du dich eigentlich perler? Wenn du Perl kennen würdest, müsstest du eigentlich wissen, dass man Backslashes in Strings escapen muss.

    jap, ist mir sehr wohl bewusst, aber ich dachte, das wär ne Eigenart von Perl, die ich nicht einfach auf C++ übertragen kann!


Anmelden zum Antworten