Hallo Community,
ich habe erst vor kurzem angefangen unter Linux Ubuntu C zu lernen, bin also noch ein blutiger Anfänger.
Ich möchte eine Website aufrufen, und deren Inhalt verarbeiten.
Dazu habe ich einen Socket gebastelt, der http und https unterstützt. Über diesen rufe ich die gewünschte Seite auf. Dabei wird über eine Pipe die Seite an den verwaltenden Prozess weitergeleitet.
Dieser Speichert die Seite in einer Variable (char *), indem die übermittelten Daten an die Variable immer hinten ran gehängt werden.
Das Problem entsteht, so vermute ich, wenn der Speicherbedarf der Variable zu groß wird:
Rufe ich beispielsweise "http://www.google.de" auf komme ich auf Größe von (43349 Bytes müssten es ein)
Enthält die Seite beispielsweise eine lange Liste, können 134912 Bytes zugewisen werden. Sobald die nächsten 256 Bytes rangehängt werden sollen (= 135168 Byte) entsteht ein Speicherzugriffsfehler und das Programm stürzt ab.
Das "Ranhängen" wird wie folgt bewerkstelligt:
Hängt das damit zusammen, dass ein Variable in C nur eine bestimmten Größe haben darf, oder ist da auf char* begrenzt?
Gibt es eine Möglichkeit mein Problem zu beheben?
Vielen Dank schonmal für eure Hilfe!
LG
ich habe erst vor kurzem angefangen unter Linux Ubuntu C zu lernen, bin also noch ein blutiger Anfänger.
Ich möchte eine Website aufrufen, und deren Inhalt verarbeiten.
Dazu habe ich einen Socket gebastelt, der http und https unterstützt. Über diesen rufe ich die gewünschte Seite auf. Dabei wird über eine Pipe die Seite an den verwaltenden Prozess weitergeleitet.
Dieser Speichert die Seite in einer Variable (char *), indem die übermittelten Daten an die Variable immer hinten ran gehängt werden.
Das Problem entsteht, so vermute ich, wenn der Speicherbedarf der Variable zu groß wird:
Rufe ich beispielsweise "http://www.google.de" auf komme ich auf Größe von (43349 Bytes müssten es ein)
Enthält die Seite beispielsweise eine lange Liste, können 134912 Bytes zugewisen werden. Sobald die nächsten 256 Bytes rangehängt werden sollen (= 135168 Byte) entsteht ein Speicherzugriffsfehler und das Programm stürzt ab.
Das "Ranhängen" wird wie folgt bewerkstelligt:
Code:
int i;
char buff[256];
char *result = (char *) malloc(0);
while ((i = read(pout[0], &buff, sizeof(buff))) != 0) {
if (i == -1) { perror("read"); }
memcpy (&result[strlen(result)], buff, i);
fflush(0);
}
Hängt das damit zusammen, dass ein Variable in C nur eine bestimmten Größe haben darf, oder ist da auf char* begrenzt?
Gibt es eine Möglichkeit mein Problem zu beheben?
Vielen Dank schonmal für eure Hilfe!
LG
Zuletzt bearbeitet: