Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Commando aus einem stringinhalt ausführen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.10.2002, 01:23 Uhr
~Toby
Gast


Hi,

mal ne C-Frage eines Unwissenden:

kann man einen im RAM gespeicherten string ausführen? zb habe ich:

char *xyz="dir"

und möchte genau dieses 'dir' beim starten des Programs zum
auflisten des Verzeichnisses benutzen. ich weiss, es gibt
zB system(), aber mir liegt es daran den string, so wie der ist,
als stringinhalt ausführen zu können.

danke
Toby
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.10.2002, 07:59 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich bin heute mal wieder was langsamer als andere Kinder, deshalb versteh ich dich wohl nicht:

Zitat:
ich weiss, es gibt zB system(), aber mir liegt es daran den string, so wie der ist, als stringinhalt ausführen zu können.


Was macht denn system Deiner Meinung nach anders?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 11.10.2002 um 07:59 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.10.2002, 17:55 Uhr
~Toby
Gast


Hi

> Was macht denn system Deiner Meinung nach anders?

nein, nein. Ich meine, dass system() das ausführt, was drin als Option in der funktion steht. Und das was ich suche, ist wie kann man das, was in dem string steht ausführen, ohne auf system() zugreifen zu müssen. Gibt es da so ein trick?

TIA
Toby, der hofft sich wieder nicht zu kompliziert ausgedrückt zu haben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.10.2002, 19:16 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Wenn ich das richtig verstehe...NEIN...dazu ist system() ja da (sonst wäre es ja unnötig)...
Je nach Platform gibt es natürlich auch (Nicht-Standard-)Funktionen die ähnliches tun.

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.10.2002, 01:08 Uhr
~Toby
Gast


Hi,

> Je nach Platform gibt es natürlich auch (Nicht-Standard-)Funktionen die ähnliches tun.

dann hätte ich gerne sowas für x86 und linux
wer weiss diese _nicht_standard_funktionen_ bitte melden

also ich habe zb

main()
{
char *xyz="ls";
jetzt_dieses_inhalt_aus_xyz_also_ls_ausfuehren_bitte();
}


danke
Toby
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.10.2002, 09:07 Uhr
Tommix



Hallo,
Ich verstehe Dich ehrlich gesagt auch nicht ganz.

C++:
#include <process.h>

#define jetzt_dieses_inhalt_aus_xyz_also_ls_ausfuehren_bitte() system(xyz)

int main()
{
    char *xyz="ls";
    jetzt_dieses_inhalt_aus_xyz_also_ls_ausfuehren_bitte();

    return 0;
}



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2002, 09:54 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Für Linux gibt es die Funktionen der exec*-Familie.

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2002, 11:35 Uhr
~Toby
Gast


Hi zusammen,

oke die Geschichte die ist die:
mein Kollege meint er hat den kürzesten Aufruf von 'env' ohne aufrufen von system(), exec(), usw..geschrieben. Sein Code ist:


main(int a,int b,char**c){while(c[a++-1])puts(c[a-2]);}

und ich dachte wenn ich als string 'env' abspeichere und es dann irgendwie ausführen kann, dann lege ich kürzer als diese 56 Zeichen...

Ich hoffe jetzt weiss jeder wohin ich will :)

Danke
Toby
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.10.2002, 15:29 Uhr
virtual
Sexiest Bit alive
(Operator)


Krass.
Also bzgl. des main Programms gibt es einen netten FAQ-Beitrag. Dabei ist anzumerken, daß die signatur von main beim Beispiel deines Kollegen nun kmplett neben der Schnur ist. Ein
C++:
int main(int a, char** b, char**c)
hätte ich ja noch verstehen können.

Bezweifeln möchte ich noch, dass es der kürzeste Aufruf ist. Sicherlich ist es der am wenigsten wiederverwendbare.

Was Du willst, ist eine Funktion. Die könnte so aussehen:

C++:
for(int i=0;environ[ i ];++i)puts(environ[ i ]); // 44 Zeichen


Die Variable environ heisst auf anderen System ggf. mit _ (also einfach _environ), gehört nicht zum Standard und die Verfügbarkeit des Symbols ist auch davon abh. welche Flags man beim Compiler setzt (siehe man pages).
Um es als main Funktion wie dein Kollege zu haben kann man auch schreiben:

C++:
main(){for(int i=0;environ[ i ];++i)puts(environ[ i ]);} // 52 Zeichen


Aber ich finde min. Anzahl der Zeichen kein Qualitaetsmerkmal.
Um es als allg. Funktion zu verwenden, ist main durch "void functionname" zu ersetzen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 12.10.2002 um 15:32 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.10.2002, 21:55 Uhr
~Toby
Gast


Hi,

> ....ich finde min. Anzahl der Zeichen kein Qualitaetsmerkmal.
ja, es ging hier aber nicht um den Schönheitspreis, sondern um die kürzeste Variante ;)

dein code hier:

main(){for(int i=0;environ[ i ];++i)puts(environ[ i ]);}

sieht schon mal gut aus, leider fuznt das nicht, weil ich nicht weiss wie die variable für das aufrufen von enviroment aus C unter linux heisst :( Kann mir da jemand unter die Arme greifen, oder sagen welche 'man page' ich durchblättern soll?

THX
Toby
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: