/* from http://jwz.livejournal.com/817438.html */
#include
#include
#include
#include
static int
do_fork(void)
{
int fd = -1;
pid_t pid;
if ((pid = forkpty(&fd, NULL, NULL, NULL)) < 0)
perror("forkpty");
else if (!pid)
{
printf ("0123456789\n");
/* #### Uncommenting this makes it work! */
/* sleep(20); */
exit (0);
}
return fd;
}
int
main (int argc, char **argv)
{
char s[1024];
int n;
int fd = do_fork();
/* On 10.4, this prints the whole 10 character line, 1 char per second.
On 10.5, it prints 1 character and stops.
*/
do {
n = read (fd, s, 1);
if (n > 0) fprintf (stderr, "%c", *s);
sleep (1);
} while (n > 0);
return 0;
}