[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