forkpty and fdopen
    Andrew Barton 
    andrevv at users.sourceforge.net
       
    Wed Jul 23 17:34:22 PDT 2003
    
    
  
I'm trying to make a program that uses forkpty(), then runs sh in the
child process, and then writes to the child using streams. But it
doesn't work! It hangs on the wait() call; apparently the child never
sees the "exit\n".
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
main()
{
	int fd;
	pid_t pid;
	pid = forkpty (&fd, 0, 0, 0);
	if (pid == 0) {
		execlp ("sh", "sh", (void *)0);
		_exit (1);
	} else if (pid == -1) {
		exit (1);
	} else {
		FILE *F;
		F = fdopen (fd, "w");
		fprintf (F, "exit\n");
		fflush (F);
		wait (0);
	}
	exit (0);
}
    
    
More information about the freebsd-questions
mailing list