October 30, 2006 GETFH 2

### NAME

getfh - get file handle

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` getfh(```const char *path``, void *fhp``, size_t *fh_size`)

### DESCRIPTION

getfh(``) returns a file handle for the specified file or directory in the file handle pointed to by ```fhp`. The variable pointed to by ```fh_size` has to be initialized to the memory allocated for the variable sized file handle. On return the value will be replaced by the actual size needed (which will vary depending on the file system the path is on). This system call is restricted to the superuser. To query the necessary size for the filehandle, a ```NULL` pointer may be passed as ```fhp`, and the value pointed to by ```fh_size` should be initialized to zero.

### RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error.

### ERRORS

getfh(``) fails if one or more of the following are true:

[```ENOTDIR`]
  A component of the path prefix of ```path` is not a directory.

[```ENAMETOOLONG`]
  The length of a component of ```path` exceeds {```NAME_MAX`} characters, or the length of ```path` exceeds {```PATH_MAX`} characters.

[```ENOENT`]
  The file referred to by ```path` does not exist.

[```EACCES`]
  Search permission is denied for a component of the path prefix of ```path`.

[```ELOOP`]
  Too many symbolic links were encountered in translating ```path`.

[```EFAULT`]
  ```fhp` points to an invalid address.

[```EIO`]
  An I/O error occurred while reading from or writing to the file system.

[```E2BIG`]
  The memory allocated for the file handle is too small. The size needed has been written to the variable pointed to by ```fh_size`.

[```ENOMEM`]
  The kernel failed to allocate temporary memory to create a filehandle of the requested size.

### SEE ALSO

fhstat(2), fhstatvfs(2), fhstatvfs1(2)

### HISTORY

The getfh(``) function first appeared in 4.4BSD.