Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!apple!ames!vsi1!altos86!dtynan From: jmberkley@watnext.waterloo.edu (J. Michael Berkley) Newsgroups: comp.unix Subject: Re: QNX Message-ID: <3482@altos86.Altos.COM> Date: 6 Jul 89 19:06:20 GMT References: <1046@altos86.UUCP> <1096@altos86.UUCP> <1226@altos86.UUCP> Sender: dtynan@altos86.Altos.COM Reply-To: uunet!RELAY.CS.NET!jmberkley%watnext.waterloo.edu Organization: University of Waterloo, Waterloo, Ontario, Canada Lines: 19 Approved: dtynan@zorba.Tynan.COM In-Reply-To: peter@ficc.uu.net's message of 12 Jun 89 07:43:50 GMT In article <1226@altos86.UUCP> peter@ficc.uu.net writes: > I was also under the impression that QNX does NOT implement the fork() > system call. This is just fine for realtime work (fork() is a pig), but > it's not adequate in a development environment where you're going to want > to run your favorite UNIX tools. No, QNX does have fork(), and it works very efficiently. I once wrote a terminal emulator for QNX that used fork() to start two copies of itself, one task for each of the screen, keyboard and serial port. QNX also shares code, so the only memory overhead was the data. Inter-task messages under QNX are so efficient that using the three tasks with inter-task messaging made the emulator faster than one monolithic task polling the keyboard and serial port. Mike Berkley, University of Waterloo PAMI Lab jmberkley@watnext.waterloo.edu {utai,uunet}!watmath!watnext!jmberkley