fattach(3C)                                                        fattach(3C)


NAME
     fattach - attach a STREAMS-based file descriptor to an object in the
     filesystem name space

SYNOPSIS
     #include <unistd.h>
     int fattach(int fildes, const char *path);

DESCRIPTION
     The fattach routine attaches a STREAMS-based file descriptor to an object
     in the filesystem name space, effectively associating a name with fildes.
     fildes must be a valid open file descriptor representing a STREAMS file.
     path is a pathname of an existing object, and the effective user ID of
     the calling process must be the owner of the file and have write
     permissions, or the calling process must have appropriate privilege
     (P_OWNER).  All subsequent operations on path will operate on the STREAMS
     file until the STREAMS file is detached from the node.  fildes can be
     attached to more than one path; that is, a stream can have several names
     associated with it.

     The attributes of the named stream (see stat(2)), are initialized as
     follows:  the permissions, user ID, group ID, and times are set to those
     of path, the number of links is set to 1, and the size and device
     identifier are set to those of the streams device associated with fildes.
     If any attributes of the named stream are subsequently changed (for
     example, chmod(2)), the attributes of the underlying object are not
     affected.

RETURN VALUE
     If successful, fattach returns 0; otherwise it returns -1 and sets errno
     to indicate an error.

ERRORS
     Under the following conditions, the function fattach fails and sets errno
     to:

     EACCES       Search permission is denied on a component of the path
                  prefix.

     EACCES       The user is the owner of the filenamed by path but does not
                  have write permissions on path or fildes is locked.

     EBADF        fildes is not a valid open file descriptor.

     ENOENT       path does not exist.

     ENOTDIR      A component of a path prefix is not a directory.

     EINVAL       fildes does not represent a STREAMS file.


     EPERM        The effective user ID of the calling process is not the
                  owner of the filenamed by path.

     EBUSY        path is currently a mount point or has a STREAMS file
                  descriptor attached it.

     ENAMETOOLONG The size of path exceeds {PATH_MAX}, or the component of a
                  pathname is longer than {NAME_MAX} while {_POSIX_NO_TRUNC}
                  is in effect.

     ELOOP        Too many symbolic links were encountered in translating
                  path.

     EREMOTE      path is a file in a remotely mounted directory.

SEE ALSO
     fdetach(1M), fdetach(3C), isastream(3C), streamio(7)


                                                                        Page 2