Provided by: manpages-posix-dev_2017a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       pthread_attr_getdetachstate, pthread_attr_setdetachstate — get and set the detachstate
       attribute

SYNOPSIS

       #include <pthread.h>

       int pthread_attr_getdetachstate(const pthread_attr_t *attr,
           int *detachstate);
       int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);

DESCRIPTION

       The detachstate attribute controls whether the thread is created in a detached state.   If
       the  thread  is  created  detached,  then use of the ID of the newly created thread by the
       pthread_detach() or pthread_join() function is an error.

       The    pthread_attr_getdetachstate()    and    pthread_attr_setdetachstate()    functions,
       respectively, shall get and set the detachstate attribute in the attr object.

       For    pthread_attr_getdetachstate(),    detachstate    shall    be    set    to    either
       PTHREAD_CREATE_DETACHED or PTHREAD_CREATE_JOINABLE.

       For  pthread_attr_setdetachstate(),  the  application  shall  set  detachstate  to  either
       PTHREAD_CREATE_DETACHED or PTHREAD_CREATE_JOINABLE.

       A  value of PTHREAD_CREATE_DETACHED shall cause all threads created with attr to be in the
       detached state, whereas using a value of PTHREAD_CREATE_JOINABLE shall cause  all  threads
       created  with  attr  to  be  in  the  joinable state. The default value of the detachstate
       attribute shall be PTHREAD_CREATE_JOINABLE.

       The  behavior  is  undefined  if  the  value   specified   by   the   attr   argument   to
       pthread_attr_getdetachstate()  or  pthread_attr_setdetachstate()  does  not  refer  to  an
       initialized thread attributes object.

RETURN VALUE

       Upon        successful        completion,        pthread_attr_getdetachstate()         and
       pthread_attr_setdetachstate()  shall return a value of 0; otherwise, an error number shall
       be returned to indicate the error.

       The pthread_attr_getdetachstate() function stores the value of the  detachstate  attribute
       in detachstate if successful.

ERRORS

       The pthread_attr_setdetachstate() function shall fail if:

       EINVAL The value of detachstate was not valid

       These functions shall not return an error code of [EINTR].

       The following sections are informative.

EXAMPLES

   Retrieving the detachstate Attribute
       This example shows how to obtain the detachstate attribute of a thread attribute object.

           #include <pthread.h>

           pthread_attr_t thread_attr;
           int            detachstate;
           int            rc;

           /* code initializing thread_attr */
           ...

           rc = pthread_attr_getdetachstate (&thread_attr, &detachstate);
           if (rc!=0) {
               /* handle error */
               ...
           }
           else {
               /* legal values for detachstate are:
                * PTHREAD_CREATE_DETACHED or PTHREAD_CREATE_JOINABLE
                */
                ...
           }

APPLICATION USAGE

       None.

RATIONALE

       If   an  implementation  detects  that  the  value  specified  by  the  attr  argument  to
       pthread_attr_getdetachstate()  or  pthread_attr_setdetachstate()  does  not  refer  to  an
       initialized  thread attributes object, it is recommended that the function should fail and
       report an [EINVAL] error.

FUTURE DIRECTIONS

       None.

SEE ALSO

       pthread_attr_destroy(), pthread_attr_getstacksize(), pthread_create()

       The Base Definitions volume of POSIX.1‐2017, <pthread.h>

COPYRIGHT

       Portions of this text are reprinted and  reproduced  in  electronic  form  from  IEEE  Std
       1003.1-2017,  Standard  for  Information Technology -- Portable Operating System Interface
       (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C)  2018  by
       the  Institute  of  Electrical  and Electronics Engineers, Inc and The Open Group.  In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard,  the  original  IEEE  and  The  Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .