john@hcr.UUCP (John R. MacMillan) (06/27/89)
I'm looking for info on the /dev/fd deviceson some Unixes. I grasp the idea, but I'd like some specifics. Do they behave liked a dup()ed fd, for instance? I'd appreciate any help or references anyone could give me. Thanks! -- John R. MacMillan No parking by the sewer sign a hot dog with a HCR Corporation razor broke there's water dripping up the spout {utzoo,utcsri}!hcr!john but I don't care let it all hang out -- The Nails
chris@mimsy.UUCP (Chris Torek) (06/28/89)
In article <1171@hcr.UUCP> john@hcr.UUCP (John R. MacMillan) writes: >I'm looking for info on the /dev/fd devices on some Unixes. I grasp >the idea, but I'd like some specifics. Do they behave liked a dup()ed >fd, for instance? The result of the call open(name, appropriate_mode) where `name' points to a name like "/dev/fd/3" and appropriate_mode is a mode that does not clash with the underlying access mode of the file descriptor (here, 3) is identical to the result of dup(file_descriptor) (here dup(3)). Essentially, the `device' driver takes the minor number from the open() call (minor(dev) in fdopen(dev_t dev, int mode)) and calls the internal dup() routine after making a few security and sanity checks. (The file descriptor created by open() happens to be in u.u_r.r_val1 at that point in the driver, which lets fdopen() know which file descriptor to replace.) In particular, opening /dev/fd/N with O_RDONLY or O_WRONLY can (if fd N happens already to have that permission) wind up with a file descriptor open for O_RDWR. This is how it works in `4.4BSD' (or whatever it is called), at least, and the code there is based on our code (Fred Blonder's and mine) as modified to match the V8/V9 semantics, as far as I knew them. (The `modification' was to delete some of Fred's code, which did a second open() iff the descriptor referred to a real file. This applied the mode argument to the underlying inode, rather than the present descriptor permissions, and gave a separate seek pointer. Sometimes this is what you really want, but to have the semantics differ on files and sockets seemed wrong.) -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris