---
name: "libssh2_sftp_open_ex_r"
section: "3"
platform: "linux"
package: "libssh2"
version: "1.11.1-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libssh2_sftp_open_ex_r"
---

# libssh2\_sftp\_open\_ex\_r(3)

open filehandle for file on SFTP.

## NAME

libssh2\_sftp\_open\_ex\_r - open filehandle for file on SFTP.

## SYNOPSIS

```
#include <libssh2.h>
#include <libssh2_sftp.h>
LIBSSH2_SFTP_HANDLE *
libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp, const char *filename,
                       size_t filename_len,
                       unsigned long flags,
                       long mode,
                       int open_type,
                       LIBSSH2_SFTP_ATTRIBUTES *attrs);
```

## DESCRIPTION

*sftp* - SFTP instance as returned by *[libssh2\_sftp\_init(3)](/libssh2_sftp_init/3.md)*

*filename* - Remote file/directory resource to open

*filename\_len* - Length of filename

*flags* - Any reasonable combination of the LIBSSH2\_FXF\_\* constants:

- LIBSSH2\_FXF\_READ

  Open the file for reading.

- LIBSSH2\_FXF\_WRITE

  Open the file for writing. If both this and LIBSSH2\_FXF\_READ are specified, the file is opened for both reading and writing.

- LIBSSH2\_FXF\_APPEND

  Force all writes to append data at the end of the file.

- LIBSSH2\_FXF\_CREAT,

  If this flag is specified, then a new file will be created if one does not already exist (if LIBSSH2\_FXF\_TRUNC is specified, the new file will be truncated to zero length if it previously exists)

- LIBSSH2\_FXF\_TRUNC

  Forces an existing file with the same name to be truncated to zero length when creating a file by specifying LIBSSH2\_FXF\_CREAT. LIBSSH2\_FXF\_CREAT MUST also be specified if this flag is used.

- LIBSSH2\_FXF\_EXCL

  Causes the request to fail if the named file already exists. LIBSSH2\_FXF\_CREAT MUST also be specified if this flag is used.

*mode* - POSIX file permissions to assign if the file is being newly created. See the LIBSSH2\_SFTP\_S\_\* convenience defines in \<libssh2\_sftp.h\>

*open\_type* - Either of LIBSSH2\_SFTP\_OPENFILE (to open a file) or LIBSSH2\_SFTP\_OPENDIR (to open a directory).

*attrs* - Pointer to LIBSSH2\_SFTP\_ATTRIBUTES struct. See libssh2\_sftp\_fstat\_ex for detailed usage.

## RETURN VALUE

A pointer to the newly created LIBSSH2\_SFTP\_HANDLE instance or NULL on failure.

## ERRORS

*LIBSSH2\_ERROR\_ALLOC* - An internal memory allocation call failed.

*LIBSSH2\_ERROR\_SOCKET\_SEND* - Unable to send data on socket.

*LIBSSH2\_ERROR\_SOCKET\_TIMEOUT* -

*LIBSSH2\_ERROR\_SFTP\_PROTOCOL* - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server.

*LIBSSH2\_ERROR\_EAGAIN* - Marked for non-blocking I/O but the call would block.

## AVAILABILITY

Added in libssh2 1.11.0

## SEE ALSO

**[libssh2\_sftp\_close\_handle(3)](/libssh2_sftp_close_handle/3.md)** **[libssh2\_sftp\_fstat\_ex(3)](/libssh2_sftp_fstat_ex/3.md)**
