From owner-freebsd-questions@FreeBSD.ORG Thu May 29 09:58:38 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CA28C37B401 for ; Thu, 29 May 2003 09:58:38 -0700 (PDT) Received: from iota.root-servers.ch (iota.root-servers.ch [193.41.193.195]) by mx1.FreeBSD.org (Postfix) with SMTP id 506C943FA3 for ; Thu, 29 May 2003 09:58:37 -0700 (PDT) (envelope-from gaml@buz.ch) Received: (qmail 85202 invoked from network); 29 May 2003 16:58:33 -0000 Received: from dclient217-162-135-22.hispeed.ch (HELO gaxp1800.root.li) (217.162.135.22) by 0 with SMTP; 29 May 2003 16:58:33 -0000 Date: Thu, 29 May 2003 19:01:21 +0200 From: Gabriel Ambuehl X-Mailer: The Bat! (v1.62i) Educational X-Priority: 3 (Normal) Message-ID: <77243311093.20030529190121@buz.ch> To: questions@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: portable coproccesses, openpty, forkpty? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Gabriel Ambuehl List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 May 2003 16:58:39 -0000 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. TIA & regards, Gabriel