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 beispielsweisesystem("ls");
wohingegen
system("ls -l");
ned funzt...seltsam oder doch irgendwie erklärbar??
danke schonmal für eure ideen...
gruß
mbp.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