[Haskell-cafe] createProcess running non-existent programs
metaniklas at gmail.com
Tue Aug 14 17:22:28 CEST 2012
2012/8/14 Alexander Kjeldaas <alexander.kjeldaas at gmail.com>:
> On 13 August 2012 23:49, Richard O'Keefe <ok at cs.otago.ac.nz> wrote:
>> On 13/08/2012, at 11:26 PM, Alexander Kjeldaas wrote:
>> > This isn't that hard - a pipe shouldn't be needed anymore. Just require
>> > a post-2003 glibc.
>> > fexecve is a system call in most BSDs. It is also implemented in glibc
>> > using a /proc hack.
>> fexecve is now in the Single Unix Specification, based on
>> POSIX as of 2008, I believe. However,
>> Portability problems not fixed by Gnulib:
>> * This function is missing on many non-glibc platforms: MacOS X 10.5,
>> FreeBSD 6.0,
>> NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5,
>> OSF/1 5.1,
>> Solaris 11 2010-11, Cygwin 1.5.x, mingw, MSVC 9, Interix 3.5, BeOS.
>> That warning doesn't seem to be fully up to date. I'm using MacOS X
>> and fexecve() isn't in the manuals or in <unistd.h>.
> FreeBSD 8.0 is covered.
> OpenBSD not covered
> OS X not covered
> Solaris probably not covered.
> So support is pretty good, I'd say. For non-modern systems, checking the
> existence of the file first is possible. The race isn't important, and one
> can always upgrade to a modern operating system.
The check would be unreliable, the file's existence doesn't imply that
it's executable. Furthermore it would add unnecessary overhead,
createProcess can be run thousands of times in a program and should be
lean and mean.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe