system, exec usw.
-
Für alle dies vielleicht auch mal brauchen:
FILE* pipe = popen("pwd", "r");
TCHAR buf[100];
fgets(buf, 100, pipe);
pclose(pipe);PS: Danke@KingR
Mfg
indiana
-
Was ist wenn dein Pfad länger als 100 Zeichen ist?
-
Dann halt buf[100]; grösser machen z.B buf[1024].
Oder gibts da ein Problem ?
-
und wenn der pfad größer als 1024 ist?
Oder gibts da ein Problem ?
Ja, es gibt, man kann trotzdem das Programm zum Abstürzen bringen.
Schau hier: http://forums.gentoo.org/viewtopic.php?t=224301 ich hab das selbe Argument damals gebracht und (um zu widersprechen) noch dümmere gebracht und siehe was daraus geworden ist.
-
indiana schrieb:
Für alle dies vielleicht auch mal brauchen:
FILE* pipe = popen("pwd", "r");
TCHAR buf[100];
fgets(buf, 100, pipe);
pclose(pipe);alle die genau *dass* brauchen, gucken sich am besten auch nochmal getcwd() an
-
@supertux
Ah,stimmt die Länge des Pfads ist ja nicht bekannt.
Also was tun ?
-
PATH_MAX nehmen.
Das Problem, dass der Buffer evtl. zu klein ist, hat man aber trotzdem. Hat man in C halt immer.Da hilft nur ordentlich überprüfen, dass man über keine Grenzen hinwegschreibt.
-
@supertux
mal davon abgesehen das 100 wohl nicht immer für den pfad reichen und statisch net der hit ischar buf[100];
fgets(buf, 100, pipe);wie genau möchtest du buf hier zum überlauf bringen?
mfg
indianaps: 101 in fgets einfügen gilt net....
-
ok, mit fgets wird das wohl kaum gehen, aber wenn man z.b. strcpy benutzt oder so dann schon.
-
supertux schrieb:
ok, mit fgets wird das wohl kaum gehen, aber wenn man z.b. strcpy benutzt oder so dann schon.
schön.... hab ich es in den vier zeilen huddel-code benutzt? ....nein
mfg indianaPs: wenn man die Zeilen while(true) malloc(sizeof(char)); einfügt stürtzt es vermutlich auch ab...