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

# setsid(2)

create session and set process group ID

## NAME

**setsid** – create session and set process group ID

## SYNOPSIS

**#include \<unistd.h\>**

*pid\_t*\

**setsid**(*void*);

## DESCRIPTION

The **setsid** function creates a new session. The calling process is the session leader of the new session, is the process group leader of a new process group and has no controlling terminal. The calling process is the only process in either the session or the process group.

Upon successful completion, the **setsid** function returns the value of the process group ID of the new process group, which is the same as the process ID of the calling process.

## ERRORS

If an error occurs, **setsid** returns -1 and the global variable *errno* is set to indicate the error, as follows:

- \[EPERM\]

  The calling process is already a process group leader, or the process group ID of a process other than the calling process matches the process ID of the calling process.

## LEGACY SYNOPSIS

**#include \<sys/types.h\>** **#include \<unistd.h\>**

The include file ⟨sys/types.h⟩ is necessary.

## SEE ALSO

setpgid(3), [tcgetpgrp(3)](/tcgetpgrp/3.md), [tcsetpgrp(3)](/tcsetpgrp/3.md), [compat(5)](/compat/5.md)

## STANDARDS

The **setsid** function is expected to be compliant with the IEEE Std 1003.1-1988 (“POSIX.1”) specification.
