Segmentation fault bei Aufruf von echo "kommando"|mein_programm



  • Hi,

    wenn ich mein Programm das libreadline benutzt in Xfce Terminal und bash mit echo "kommando"|mein_programm aufrufe, dann klappt das scheinbar für einen Augenblick, aber dann beendet es mit einem segfault.
    Rufe ich das Programm mit gleichem Kommando in Emacs' shell-mode auf (der benutzt die bash!) dann funktioniert das einwandfrei.

    Kann mir jemand erklären was da los ist?

    Interressant ist auch folgendes Testprogramm:

    #include <stdio.h>
    
    int main()
    {
        char buf[512];
        buf[ fread(buf, 512, 1, stdin) ] = 0;
        printf("%s\n", buf);
        return 0;
    }
    

    Ruft das mal in einem Terminal mit echo "hello world"|testprogramm auf und dann kommt

    $ echo "hello world"|test
    bash: echo: write error: Broken pipe

    (auch in Emacs shell-mode).
    Wie kommt es dazu?



  • Never mind, der Segmentation fault hat sich daraus ergeben, dass durch diesen speziellen Aufruf eine uninitialisierte Variable anders initialisiert wird. Jetzt läuft es wie es soll (lustigerweise hatte ich den Fehler eigentlich schon längst gefixt gehabt, aber irgendwie muss ich wohl mal ein Undo zu viel gemacht haben).


Anmelden zum Antworten