NAME
fattach() — attach a STREAMS file descriptor to an object in the file system name space
SYNOPSIS
#include <stropts.h>
int fattach(int fd, const char *path);
DESCRIPTION
The
fattach()
function attaches the
fd
file descriptor
to an object in the file system name space designated by
path.
fd
specifies an open file descriptor to a
STREAMS device or
STREAMS-based pipe.
path
specifies the pathname of an existing object in the file system.
A
STREAMS device or pipe can be attached to more than one node
in the file system name space. In other words, a
STREAMS device or pipe is allowed to have several associated names.
Until the
STREAMS device or pipe is detached from the node (with
fdetach(3C)
or
fdetach(1M)),
all operations on
path
will act on the
STREAMS device or pipe instead of the file system object
path.
The
fattached
stream's attributes (see the
stat(2)
reference page) are set according to the following scheme:
The group ID, user ID, times, and permissions are set to those of
path.
The size as well as the device number are set to those of the
STREAMS device or pipe designated by the
fd
parameter.
Note that although the attributes of the
fattached
STREAMS device or pipe may change (see the
chmod(2)
reference page), the attributes of the underlying file system object
path
will not be changed.
The number of links is set to 1.
RETURN VALUE
Upon successful completion, the
fattach()
function returns a value of 0 (zero). Otherwise, it returns a value of -1, and
errno
is set to indicate the error.
ERRORS
If any of the following conditions occurs, the
fattach()
function sets
errno
to the value that corresponds to the condition.
- [EACCES]
Although the user is the owner of
path,
the user has no write
permissions for it.
- [EBADF]
The
fd
parameter is an invalid file descriptor.
- [EBUSY]
The existing object specified by the
path
parameter is already mounted or has a file descriptor
attached to it.
- [EFAULT]
The
path
parameter points to a location
outside of the allocated address space of the process.
- [EINVAL]
The
fd
parameter does not refer to a
STREAMS device or
STREAMS-based pipe.
- [ELOOP]
When
path
was translated, too many symbolic links were found.
- [ENOENT]
path
does not exist.
- [ENOTDIR]
The directory portion of the
path
parameter does not exist.
- [ENAMETOOLONG]
The size of a pathname component is longer than
NAME_MAX
when
_POSIX_NO_TRUNC
is in effect, or the pathname length is longer than
PATH_MAX.
- [EPERM]
The current effective user ID is not the owner of the existing object
specified by the
path
parameter.
STANDARDS COMPLIANCE
fattach(): SVID3