system() mit Fehler 256



  • hi leutz!

    ich versuche z.zt. mittels des befehls

    system(...);
    

    etwas auf der konsole auszuführen. allerdings ernte ich dabei immer fehler 256 (socket is alrady connected), ganz egal welches kommando ich an die "konsole" übergeben will.
    kann sich darauf jemand einen reim machen?
    oder weiss jemand noch ne andere möglichkeit, auf die "konsole" zuzugriefen, ausser mit diesem befehl??

    danke und gruß
    mb



  • OS?



  • du willst wirklich wissen für welches betriebssystem??
    QNX!! (QNX 6.2.1)
    Wenn Dir das weiterhilft...

    Habe mittlerweile n paar tests gemacht...anscheinend funktioniert

    system("ls")

    alle anderen versuche sind erfolgreich in die hose gegangen...soll heissen sie sind gescheitert...:(
    warum lässt sich system() nur mit diesem konsolenbefehl ausführen...oder anders herum:
    warum nicht mit den anderen, die ich probiert habe??

    danke und gruß
    mb



  • Use the WEXITSTATUS() macro to determine the low-order 8 bits of the termination status of the process.

    Scheinbar sind nur die low 8 Bit wichtig für den Exit-Status des Prozesses.

    Also 256 => 0. Funzt doch. 🤡 👍



  • das klingt ja alles schön und gut...aber wenn ich n prozessmanager aufrufe, dann is der prozess, den ich über system() starten will ned gestartet...irgendwas scheint da also trotzdem irgendwie ned zu funktionieren...*wunder*

    noch irgendwelche ideen??
    aber danke schonmal für das bisherige!

    gruß
    mb



  • noch seltsamer finde ich:
    Wenn ich s script/programm direkt auf m server ausführe, also auf der konsole, dann funktioniert des ganze...und dann liefert er auch "0, no error" zurück...der http-server streikt weiterhin...also er bringt zwar "256, ..." aber da stimme ich mittlerweile mit der meinung von "sgt. nukem" überein, dass des auch ne "0, no error" is...
    dummerweise sagt eben der prozessmanager was anderes...siehe mein letzter post...

    gruß
    mb



  • Im Zweifelsfall kannst du ja Programme mittels POSIX API starten.

    #include <unistd.h>
    #include <sys/types.h>
    
    void exec(char const *prg, char *const argv[]) {
      pid_t pid=vfork();
      if(pid==0) {
        execvp(prg,argv);
        _exit(-1);
      }
      else if(pid<0) {
        //ERROR
      }
    }
    


  • ok...ich bin weiter vorgestossen und habe die problematik näher eingekreist:
    system("..") funktioniert, solange ich keine parameter mit übergebe...so funzt beispielsweise

    system("ls");

    wohingegen

    system("ls -l");

    ned funzt...seltsam oder doch irgendwie erklärbar??

    danke schonmal für eure ideen...
    gruß
    mb

    p.s.: @kingruedi:
    hab ich auch schon in betracht gezogen...des is nur n umweg für n absoluten notfall...danke trotzdem



  • naja, system hat eben einige Nachteile
    http://www.c-plusplus.net/forum/viewtopic.php?t=39453


Log in to reply