Segmention fault - Fehlersuche (Anfänger)

Dieses Thema im Forum "C/C++" wurde erstellt von nice, 20.02.2006.

  1. #1 nice, 20.02.2006
    Zuletzt bearbeitet: 20.02.2006
    nice

    nice Grünschnabel

    Dabei seit:
    08.07.2005
    Beiträge:
    3
    Zustimmungen:
    0
    Gelöst - Segmention fault - Fehlersuche (Anfänger)

    [edit2]
    Da man leider nicht auf seine eigenen Beitäge posten darf - warum auch immer - wollte ich mitteilen, dass das Problem gelöst ist!

    hier der funktionierende Quelltext (kann ja sein, dass den mal jemand brauchen kann)

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    #include <string.h>
    
    int main (int argc, char *argv[]) {
          Display *display;
          Window focus_return;
          int revert_to_return;
      int i;
    
      if (argc<3) {
        printf("usage: ./sendkey key1 key2 key3 etc.\n\n");
        return(1);
      }
    
    
    if ((display = XOpenDisplay(NULL)) == NULL)
    {
            printf("Unable to open display\n");
            return 1;
    }
    
    XGetInputFocus(display, &focus_return,&revert_to_return);
    
      for (i=3; i<argc; ++i) {
        XEvent ev;
        KeySym key;
        ev.xkey.type=KeyPress;
        ev.xkey.window=focus_return;
        ev.xkey.root=ev.xkey.subwindow=None;
        ev.xkey.time=0;
        ev.xkey.x=ev.xkey.y=ev.xkey.x_root=ev.xkey.y_root=0;
        ev.xkey.state=0;
        key=XStringToKeysym(argv[i]);
        ev.xkey.keycode=XKeysymToKeycode(display, key);
        ev.xkey.same_screen=True;
        XSendEvent(display, focus_return, True, KeyPressMask, &ev);
        ev.type=KeyRelease;
        XSendEvent(display, focus_return, True, KeyReleaseMask, &ev);
      }
     
      XCloseDisplay(display);
    
      return(0);
    }
    
    
    [edit2]


    [edit]
    Ich habe vergessen zu sagen, dass das ich das ganze auch bei
    http://www.c-plusplus.de/forum/view...0-and-postorder-is-asc-and-highlight-is-.html
    gepostet habe
    [/edit]

    Hallo,
    ich habe versucht einen Code-Schnipsel den ich in irgendeinem Forum gefunden habe zu erweitern. Der Schnipsel gibt über XSendEvent() an ein vorher per Parameter festgelegtes Fenster 3 durch Parameter angegebene Tastatureingaben. Ich habe versucht diesen Schnipsel um die XGetInputFocus() Funktion zu erweitern. Ich bekomme das Programm auch compiliert, nur bei der Ausführung erhalte ich ein
    Code:
    Segmention fault
    Wie finde ich nun den Fehler? Und was habe ich falsch gemacht?
    Danke schon mal!

    Hier der Original-Schnippsel:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    #include <string.h>
    
    int main (int argc, char *argv[]) {
      Display *dpy;
      Window window;
      char *s;
      int i;
    
      if (argc<3) {
        printf("usage: ./sendkey windowid key1 key2 key3 etc.\n\n");
        return(1);
      }
     
      if ((dpy=XOpenDisplay(NULL))==NULL) {
        fprintf(stderr, "error: cannot open display\n\n");
        return(1);
      }
    
      window=(Window)strtol(argv[1], &s, 0);
      if (*s) {
        fprintf(stderr, "error: bad windowID\n\n", s);
        XCloseDisplay(dpy);
        return(1);
      }
    
      for (i=2; i<argc; ++i) {
        XEvent ev;
        KeySym key;
        ev.xkey.type=KeyPress;
        ev.xkey.window=window;
        ev.xkey.root=ev.xkey.subwindow=None;
        ev.xkey.time=0;
        ev.xkey.x=ev.xkey.y=ev.xkey.x_root=ev.xkey.y_root=0;
        ev.xkey.state=0;
        key=XStringToKeysym(argv[i]);
        ev.xkey.keycode=XKeysymToKeycode(dpy, key);
        ev.xkey.same_screen=True;
        XSendEvent(dpy, window, True, KeyPressMask, &ev);
        ev.type=KeyRelease;
        XSendEvent(dpy, window, True, KeyReleaseMask, &ev);
      }
     
      XCloseDisplay(dpy);
    
      return(0);
    }
    
    und hier mein Versuch die Erweiterung einzubauen:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    #include <string.h>
    
    int main (int argc, char *argv[]) {
          Display *display;
          Window *focus_return;
          int *revert_to_return;
      int i;
    
      if (argc<3) {
        printf("usage: ./sendkey key1 key2 key3 etc.\n\n");
        return(1);
      }
    
    
    if ((display = XOpenDisplay(NULL)) == NULL)
    {
            printf("Unable to open display\n");
            return 1;
    }
    
    XGetInputFocus(display, focus_return,revert_to_return);
    
      for (i=3; i<argc; ++i) {
        XEvent ev;
        KeySym key;
        ev.xkey.type=KeyPress;
        ev.xkey.window=(int)focus_return;
        ev.xkey.root=ev.xkey.subwindow=None;
        ev.xkey.time=0;
        ev.xkey.x=ev.xkey.y=ev.xkey.x_root=ev.xkey.y_root=0;
        ev.xkey.state=0;
        key=XStringToKeysym(argv[i]);
        ev.xkey.keycode=XKeysymToKeycode(display, key);
        ev.xkey.same_screen=True;
        XSendEvent(display, (int)focus_return, True, KeyPressMask, &ev);
        ev.type=KeyRelease;
        XSendEvent(display, (int)focus_return, True, KeyReleaseMask, &ev);
      }
     
      XCloseDisplay(display);
    
      return(0);
    }
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Segmention fault - Fehlersuche (Anfänger)

Die Seite wird geladen...

Segmention fault - Fehlersuche (Anfänger) - Ähnliche Themen

  1. Cyrus - und Segmention fault

    Cyrus - und Segmention fault: Hallo ! Jetzt hab ich heute morgen angefangen mit dem Cyrus IMAP Server und ihn compiliert ... Bin nach der Cyrus IMAP Howto vorgegangen ......
  2. Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«

    Großbritannien fördert Bürgerbeteiligung durch die Initiative »Digital by Default«: Großbritanniens Government’s Digital Service (GDS) hat 2015 die Initiative »Digital by Default« gestrafft, um Richtlinien zur Erstellung...
  3. default befehle in der bash

    default befehle in der bash: Hallo! Ich suche eine Lösung die vor ALLEN bash Befehlen "time ionice -c3" setzt. deb6, .bashrc? Vielen Dank für Eure Hilfe, Manfred
  4. Linux Nmap Default Router Services Scan Shellcode

    Linux Nmap Default Router Services Scan Shellcode: 73 bytes small Linux/x86 Nmap default router services scan shellcode. Weiterlesen...
  5. iptables - default policy - Server macht dicht

    iptables - default policy - Server macht dicht: Moin zusammen, beisse mir hier seit etwa drei Tagen die Zähne an iptables aus. Hier die Regeln, die beim Booten (oder manueller...