---
name: "pselect"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/pselect"
---

# pselect(2)

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 errorfds*, *const struct timespec \*restrict timeout*, *const sigset\_t \*restrict sigmask*);

## 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 *errorfds* 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, *sigmask* 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)

## 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 **pselect**() manual page was written by Garrett Wollman ⟨wollman@FreeBSD.org⟩.
