portable coproccesses, openpty, forkpty?

Gabriel Ambuehl gaml at buz.ch
Thu May 29 09:58:39 PDT 2003

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.

TIA & regards,

More information about the freebsd-questions mailing list