Hirdetés

Új hozzászólás Aktív témák

  • orgonista

    csendes tag

    Sziasztok!

    A gnuplotot szeretném egy shell szkriptből vezérelni egy named pipe-on keresztül linux alatt. Hogy a gnuplot ne lépjen ki az első átküldött utasítás után, a következő programot írtam, ami kiszűri az EOF-okat az adatfolyamból:

    // eoftalanit.c
    # include <stdio.h>

    main() {

    int a;

    while (1) {
    a = getc(stdin);
    if (a == EOF) {
    putc('\n', stdout);
    } else {
    putc(a, stdout);
    }
    }
    }


    Létrehozom a pipe-file-t:

    $ mkfifo namedpipe

    és ráakasztom a gnuplotot:

    $ eoftalanit <namedpipe | gnuplot &

    utána küldhetem az utasításokat bele:

    $ echo 'test' >namedpipe

    Eddig ok, az utasítás lefut és a programom várja a következő utasítást, ám közben a ciklus körbe-körbe jár. Mindig EOF-ot olvas és újsort küld a gnuplotnak, ezzel felzabál a kettő együtt kb. 90% proc. időt. Az érdekes számomra az, hogy az első getc(stdin) hívás még szépen vár míg küldök valamit, a ciklus csak ezután fut folyamatosan.

    A kérdésem az, hogy hogyan érhetem el, hogy miután megkapja az EOF-ot az utasítás végén, térjen vissza a kiindulási állapotba és a getc() várjon türelemmel a következő nem EOF-ra?

    köszönöm: orgonista


    [Szerkesztve]

Új hozzászólás Aktív témák