'\"macro stdmacro
.if n .pH g2.setsid @(#)setsid	40.13 of 10/10/89
.\" Copyright 1989 AT&T
.nr X
.if \nX=0 .ds x} setsid 2 "" "\&"
.if \nX=1 .ds x} setsid 2 ""
.if \nX=2 .ds x} setsid 2 "" "\&"
.if \nX=3 .ds x} setsid "" "" "\&"
.TH \*(x}
.SH NAME
\f4setsid\f1 \- set session ID
.SH SYNOPSIS
\f4#include <sys/types.h>\f1
.br
\f4#include <unistd.h>\f1
.PP
\f4pid_t setsid(void);\f1
.SH DESCRIPTION
If the calling process is not already a process group leader, \f4setsid\fP sets the
process group ID and session ID of the calling process to the process ID of
the calling process, and releases the process's controlling terminal.
.PP
\f4setsid\fP will fail and return an error if the following is true:
.TP 15
\f4EPERM\fP
The calling process is already a process group leader, or there are processes other
than the calling process whose process group ID is equal to the process ID
of the calling process.
.SH SEE ALSO
\f4intro\fP(2),
\f4exec\fP(2), \f4exit\fP(2), \f4fork\fP(2), \f4getpid\fP(2), \f4getpgid\fP(2), \f4getsid\fP(2),
\f4setpgid\fP(2), \f4setpgrp\fP, \f4signal\fP(2), \f4sigsend\fP(2).
.SH WARNING
If the calling process is the last member of a pipeline started by a job 
control shell, the shell may make the calling process a process group leader.
The other processes of the pipeline become members of that process group.  
In this case, the call to \f4setsid\fP will fail.  For this reason, a 
process that calls \f4setsid\fP and expects to be part of a pipeline 
should always first fork; the parent should exit and the child should 
call \f4setsid\fP, thereby insuring that the process will work reliably 
when started by both job control shells and non-job control shells.
.SH DIAGNOSTICS
Upon successful completion, \f4setsid\fP returns the calling process's session
.SM ID\*S.
Otherwise, a
value of -1 is returned and \f4errno\fP is set to indicate the error.
.\"	@(#)setsid.2	6.2 of 9/6/83
.Ee
