[linux] forkpty()

Folkert van Heusden folkert op vanheusden.com
Ma Sep 11 13:29:33 CEST 2006


Hi,

Ik zit wat te rommelen met pty's.
Nu heb ik de volgende code:

#include <pty.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main(int arg, char *argv[])
{
        char buffer[4096];
        int rc;
        int fd;
        pid_t pid = forkpty(&fd, NULL, NULL, NULL);

        if (pid == 0)
        {
                sleep(1000000000);
                exit(1);
        }

        write(fd, "test", 4);

        rc = read(fd, buffer, sizeof(buffer) - 1);
        if (rc >= 0)
                buffer[rc] = 0x00;

        printf("got: {%s}\n", buffer);

        return 0;
}

(compileren met gcc -lutil test.c)

Nou verwachtte ik dat dit GEEN output zou geven want sleep() heeft
geen output normaal gesproken. Wat schetst mijn verbazing: ik krijg bij
die read-call terug wat ik er met die write in geschoten heb!
Als ik die sleep vervang door een execlp van "/bin/sh -c 'cat >
/tmp/bla'" dan krijg ik exact hetzelfde resultaat! Overigens blijft
/tmp/bla leeg (maar wordt wel aangemaakt).

Iemand enig idee wat hier misgaat?


Folkert van Heusden

-- 
Ever wonder what is out there? Any alien races? Then please support
the seti op home project: setiathome.ssl.berkeley.edu
----------------------------------------------------------------------
Phone: +31-6-41278122, PGP-key: 1F28D8AE, www.vanheusden.com



More information about the Linux mailing list