Gerhard Brauer wrote:
Meine Versuche mit malloc scheiterten kl�glich ;-) Wenn ich Speicher gr��er mem+swap reserviere kriege ich nur einen Null pointer. Wenn ich knapp drunter bleibe und in den Pointer reinschreibe killt der Kernel irgendwann (neben anderem "unwichtigem Zeug") meinen eigenen Proze�.
Stimmt, so �hnlich habe ich das bei gerade auch beobachtet. Ein malloc(x)==NULL l�sst sich wohl nicht abfangen...
Du bist schon auf den richtigen Weg. Jetzt baue am Ende noch ein while fork() mit ein bissi Wartezeit ein, dann killt der Kernel zwar trotzdem, aber du hast immer einen neuen Prozess der dir den Memory f�llt.
Ich habe jetzt mal ein Beispiel aus meinem schlauen Buch dementsprechend etwas angepasst. Simulierte zumindest bei mir einen Runaway-Process, der nach und nach den Speicher f�llt und h�bsche Load verursacht. Was am Ende passiert, wollte ich dann doch nicht mehr probieren...:
#include <unistd.h> #include <stdlib.h> #include <stdio.h>
#define ONE_K (1024)
int main(){
char *some_memory;
int size_to_allocate = ONE_K;
int megs_obtained = 0;
int ks_obtained = 0; while(1){
for (ks_obtained =0; ks_obtained < 1024; ks_obtained++){
some_memory = (char *)malloc(size_to_allocate);
if (some_memory == NULL) exit(EXIT_FAILURE);
sprintf(some_memory, "touched");
// send child to a dead end sleep
if (!fork()) for(;;) ;
}
megs_obtained++;
printf("Now allocated %d Megabytes\n", megs_obtained);
}
exit(EXIT_SUCCESS);
}Und dann eventuell mal das ! vor dem fork() entfernen.
hth, Wolf
--
..., aber nur, wer sich vom Stumpf- und Wahnsinn ein Bild machen kann, ist auch in der Lage, dies f�r sich zu bewerten und ist nicht auf den 'gro�en Bruder' angewiesen. Nur wer Zugriff auf m�glichst viel Information hat, kann auch dar�ber urteilen, was Fehlinformation ist. (GHopper im Heise-Forum)
--
Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/
Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

