---
name: "xs_term"
section: "3"
platform: "linux"
package: "libxs-dev"
version: "1.2.0-2"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/xs_term"
---

# xs\_term(3)

terminate the context

## NAME

xs\_term - terminate the context

## SYNOPSIS

**int xs\_term (void** *\*context***);**

## DESCRIPTION

The *xs\_term()* function shall terminate the Crossroads context *context*.

Context termination is performed in the following steps:

 1\. Any blocking operations currently in progress on sockets open within *context* shall return immediately with an error code of ETERM. With the exception of *xs\_close()*, any further operations on sockets open within *context* shall fail with an error code of ETERM.

 2\. After interrupting all blocking calls, *xs\_term()* shall *block* until the following conditions are satisfied:

• All sockets open within *context* have been closed with *xs\_close()*.

• For each socket within *context*, all messages sent by the application with *xs\_send()* have either been physically transferred to a network peer, or the socket’s linger period set with the *XS\_LINGER* socket option has expired.

For further details regarding socket linger behaviour refer to the *XS\_LINGER* option in [**xs\_setsockopt**(3)](/xs_setsockopt/3.md).

## RETURN VALUE

The *xs\_term()* function shall return zero if successful. Otherwise it shall return -1 and set *errno* to one of the values defined below.

## ERRORS

**EFAULT**

The provided *context* was invalid.

**EINTR**

Termination was interrupted by a signal. It can be restarted if needed.

## SEE ALSO

[**xs**(7)](/xs/7.md) [**xs\_init**(3)](/xs_init/3.md) [**xs\_close**(3)](/xs_close/3.md) [**xs\_setsockopt**(3)](/xs_setsockopt/3.md)

## AUTHORS

The Crossroads documentation was written by Martin Sustrik \<**sustrik@250bpm.com**\[1\]\> and Martin Lucina \<**martin@lucina.net**\[2\]\>.

## NOTES

- 1\.

  sustrik@250bpm.com

  mailto:sustrik@250bpm.com

- 2\.

  martin@lucina.net

  mailto:martin@lucina.net
