---
name: "pselect"
section: "2freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pselect/2freebsd"
---

# pselect(2freebsd)

synchronous I/O multiplexing a la POSIX.1g

## NAME

**pselect** – synchronous I/O multiplexing a la POSIX.1g

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<sys/select.h\>**

*int*\

**pselect**(*int nfds*, *fd\_set \* restrict readfds*, *fd\_set \* restrict writefds*, *fd\_set \* restrict exceptfds*, *const struct timespec \* restrict timeout*, *const sigset\_t \* restrict newsigmask*);

## DESCRIPTION

The **pselect**() function was introduced by IEEE Std 1003.1g-2000 (“POSIX.1g”) as a slightly stronger version of [select(2)](/select/2.md). The *nfds*, *readfds*, *writefds*,,, and *exceptfds* arguments are all identical to the analogous arguments of **select**(). The *timeout* argument in **pselect**() points to a *const struct timespec* rather than the (modifiable) *struct timeval* used by **select**(); as in **select**(), a null pointer may be passed to indicate that **pselect**() should wait indefinitely. Finally, *newsigmask* specifies a signal mask which is set while waiting for input. When **pselect**() returns, the original signal mask is restored.

See [select(2)](/select/2.md) for a more detailed discussion of the semantics of this interface, and for macros used to manipulate the *fd\_set* data type.

## RETURN VALUES

The **pselect**() function returns the same values and under the same conditions as **select**().

## ERRORS

The **pselect**() function may fail for any of the reasons documented for [select(2)](/select/2.md) and (if a signal mask is provided) [sigprocmask(2)](/sigprocmask/2.md).

## SEE ALSO

[kqueue(2)](/kqueue/2.md), [poll(2)](/poll/2.md), [select(2)](/select/2.md), [sigprocmask(2)](/sigprocmask/2.md), [sigsuspend(2)](/sigsuspend/2.md)

## STANDARDS

The **pselect**() function conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

## HISTORY

The **pselect**() function first appeared in FreeBSD 5.0.

## AUTHORS

The first implementation of **pselect**() function and this manual page were written by Garrett Wollman ⟨*wollman@FreeBSD.org*⟩.
