fdetach() — Detach a name from a STREAMS-based file descriptor

Standards

Standards / Extensions C or C++ Dependencies
XPG4.2
Single UNIX Specification, Version 3
both  

Format

#define _XOPEN_SOURCE_EXTENDED 1
#include <stropts.h>

int fdetach(const char *path);

General description

The fdetach() function detaches a STREAMS-based file from the file to which it was attached by a previous call to fattach(). The path argument points to the path name of the attached STREAMS file. The process must have appropriate privileges or be the owner of the file. A successful call to fdetach() causes all path names that named the attached STREAMS file to again name the file to which the STREAMS file was attached. All subsequent operations on path will operate on the underlying file and not on the STREAMS file.

All open file descriptions established while the STREAMS file was attached to the file referenced by path, will still refer to the STREAMS file after the fdetach() has taken effect.

If there are no open file descriptors or other references to the STREAMS file, then a successful call to fdetach() has the same effect as performing the last close() on the attached file.

Returned value

If successful, fdetach() returns 0.

If unsuccessful, fdetach() returns -1 and sets errno to one of the following values.
Note: z/OS® UNIX services do not supply any STREAMS devices or pseudodevices. It is impossible for fdetach() to detach a file from a STREAMS-based file descriptor. See open() — Open a file for more information.
Error Code
Description
EACCES
Search permission is denied on a component of the path prefix.
EINVAL
The path argument names a file that is not currently attached.
ELOOP
Too many symbolic links were encountered in resolving path.
ENAMETOOLONG
The size of a path name exceeds PATH_MAX, or a path name component is longer than NAME_MAX, or path name resolution of a symbolic link produced an intermediate result whose length exceeds PATH_MAX.
ENOENT
A component of path does not name an existing file or path is an empty string.
ENOTDIR
A component of the path prefix is not a directory.
EPERM
The effective user ID is not the owner of path and the process does not have appropriate privileges.

Related information