---
name: "libssh2_sftp_open_ex"
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"
---

# libssh2\_sftp\_open\_ex(3)

open filehandle for file on SFTP.

## NAME

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

## SYNOPSIS

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

## 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).

## 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.

## SEE ALSO

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