Subject: Re: CVS commit: src/bin/dd
To: Dave Sainty <dave@dtsp.co.nz>
From: David Laight <david@l8s.co.uk>
List: source-changes
Date: 11/15/2003 14:15:53
> > What is wrong with:
> > 	new_fd = fcntl(fd, F_DUPFD, 3);
> > 	close(fd);
> > 	fd = newfd;
> 
> I did consider that, but it seems more error-prone.
> 
> E.g. "dd if=foo of=/dev/fd/3" would break.
> 
> Also, the fcntl(F_DUPFD)/dup2() would implicitly close the file
> descriptor on 3.  Not usually a problem, but certainly new behaviour.
> Who knows, someone somewhere might use closure of fd 3 as an awful way
> to determine if "dd" has exited or not :)

fcntl(F_DUPFD) gives you the next free fd number great than or equal to
to the one given - unlike dup2() which gives a fixed number and might close
whathever was there before.

	David

-- 
David Laight: david@l8s.co.uk