Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2003 15:45:44 -0700
From:      Joshua Oreman <oremanj@webserver.get-linux.org>
To:        Gabriel Ambuehl <gabriel_ambuehl@buz.ch>
Cc:        questions@freebsd.org
Subject:   Re: portable coproccesses, openpty, forkpty?
Message-ID:  <20030529224544.GC82918@webserver.get-linux.org>
In-Reply-To: <77243311093.20030529190121@buz.ch>
References:  <77243311093.20030529190121@buz.ch>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 29, 2003 at 07:01:21PM +0200 or thereabouts, Gabriel Ambuehl seemed to write:
> Hi,
> ok maybe I'm offtopic here, if so please excuse me ;-).
> 
> I need to implement a coprocess feature (a.stdin gets fed to b.stdin
> and b.stdout becomes a.stdin, so basically replacing stdin with
> a processed version thereof). Now the most obvious approach would be
> to use pipes to redirect stdin/stdout of the two processes but
> unfortunately, Stevens' Advanced Programming in the UNIX environment
> notes that this will result in deadlocks if stdio is used. And as I
> tend to trust Stevens on such issues, I went looking further in the
> book and he says the only way to do totally transparent coprocesses is
> with ptys.
> 
> Now as I understand it, BSD and SysV use different syntax to get ptys
> and so I'm wondering how to implement coprocesses in a portable way (on
> FreeBSD, it seems easy, forkpty does most of the work I need it to do
> but is it portable? Doesn't seem to be POSIX).
> 
> 
> I'd appreciate any comments, pointers, RTFM's, code snippets, whatever.

Yep, forkpty()/openpty() is definitely not POSIX. (Under FBSD, you have
to #include <libutil.h> and link with -lutil to use it.) However, the
source code of forkpty() and openpty() is in /usr/src/lib/libutil/pty.c,
and you could put that file in your program's directory, and link with a
simplified version of that (but you might have to change the function
names). Then you would be portable (hopefully :-)

-- Josh

> 
> 
> TIA & regards,
> Gabriel
> 
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030529224544.GC82918>