---
name: "pthread_attr_setdetachstate"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/pthread_attr_setdetachstate"
---

# pthread\_attr\_setdetachstate(3)

set/get detach state attribute in thread attributes object

## NAME

pthread\_attr\_setdetachstate, pthread\_attr\_getdetachstate - set/get detach state attribute in thread attributes object

## LIBRARY

POSIX threads library (*libpthread*, *-lpthread*)

## SYNOPSIS

```
#include <pthread.h>
```

**int pthread\_attr\_setdetachstate(pthread\_attr\_t \****attr***, int** *detachstate***);** **int pthread\_attr\_getdetachstate(const pthread\_attr\_t \****attr***,**                                 **int \****detachstate***);**

## DESCRIPTION

The **pthread\_attr\_setdetachstate**() function sets the detach state attribute of the thread attributes object referred to by *attr* to the value specified in *detachstate*. The detach state attribute determines whether a thread created using the thread attributes object *attr* will be created in a joinable or a detached state.

The following values may be specified in *detachstate*:

- **PTHREAD\_CREATE\_DETACHED**

  Threads that are created using *attr* will be created in a detached state.

- **PTHREAD\_CREATE\_JOINABLE**

  Threads that are created using *attr* will be created in a joinable state.

The default setting of the detach state attribute in a newly initialized thread attributes object is **PTHREAD\_CREATE\_JOINABLE**.

The **pthread\_attr\_getdetachstate**() returns the detach state attribute of the thread attributes object *attr* in the buffer pointed to by *detachstate*.

## RETURN VALUE

On success, these functions return 0; on error, they return a nonzero error number.

## ERRORS

**pthread\_attr\_setdetachstate**() can fail with the following error:

- **EINVAL**

  An invalid value was specified in *detachstate*.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **pthread\_attr\_setdetachstate**(), **pthread\_attr\_getdetachstate**() | Thread safety | MT-Safe |

## STANDARDS

POSIX.1-2008.

## HISTORY

POSIX.1-2001.

## NOTES

See [**pthread\_create**(3)](/pthread_create/3.md) for more details on detached and joinable threads.

A thread that is created in a joinable state should eventually either be joined using [**pthread\_join**(3)](/pthread_join/3.md) or detached using [**pthread\_detach**(3)](/pthread_detach/3.md); see [**pthread\_create**(3)](/pthread_create/3.md).

It is an error to specify the thread ID of a thread that was created in a detached state in a later call to [**pthread\_detach**(3)](/pthread_detach/3.md) or [**pthread\_join**(3)](/pthread_join/3.md).

## EXAMPLES

See [**pthread\_attr\_init**(3)](/pthread_attr_init/3.md).

## SEE ALSO

[**pthread\_attr\_init**(3)](/pthread_attr_init/3.md), [**pthread\_create**(3)](/pthread_create/3.md), [**pthread\_detach**(3)](/pthread_detach/3.md), [**pthread\_join**(3)](/pthread_join/3.md), [**pthreads**(7)](/pthreads/7.md)
