.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (C) 2016 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
+.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
-.\" License along with this manual; if not, write to the Free
-.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
-.\" USA.
+.\" License along with this manual; if not, see
+.\" <http://www.gnu.org/licenses/>.
+.\" %%%LICENSE_END
.\"
.\" Modified Thu Oct 31 14:18:40 1996 by Eric S. Raymond <esr@y\thyrsus.com>
.\" Modified 2001-12-17, aeb
-.TH GETSID 2 2001-12-17 "Linux" "Linux Programmer's Manual"
+.TH GETSID 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
getsid \- get session ID
.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
.B #include <unistd.h>
-.sp
+.PP
.BI "pid_t getsid(pid_t" " pid" );
+.PP
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.PP
+.ad l
+.PD 0
+.BR getsid ():
+.RS 4
+_XOPEN_SOURCE\ >=\ 500
+.\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+.br
+ || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.PD
+.ad
.SH DESCRIPTION
.I getsid(0)
returns the session ID of the calling process.
-.I getsid(p)
+.BR getsid ()
returns the session ID of the process with process ID
-.IR p .
-(The session ID of a process is the process group ID of the
-session leader.)
+.IR pid .
+If
+.I pid
+is 0,
+.BR getsid ()
+returns the session ID of the calling process.
.SH RETURN VALUE
On success, a session ID is returned.
-On error, (pid_t) \-1 will be returned, and
+On error, \fI(pid_t)\ \-1\fP will be returned, and
.I errno
is set appropriately.
.SH ERRORS
.TP
.B EPERM
A process with process ID
-.I p
-exists, but it is not in the same session as the current process,
+.I pid
+exists, but it is not in the same session as the calling process,
and the implementation considers this an error.
.TP
.B ESRCH
No process with process ID
-.I p
+.I pid
was found.
-.SH "CONFORMING TO"
-SVr4, POSIX.1-2001.
+.SH VERSIONS
+This system call is available on Linux since version 2.0.
+.\" Linux has this system call since Linux 1.3.44.
+.\" There is libc support since libc 5.2.19.
+.SH CONFORMING TO
+POSIX.1-2001, POSIX.1-2008, SVr4.
.SH NOTES
Linux does not return
.BR EPERM .
-.LP
-Linux has this system call since Linux 1.3.44.
-There is libc support since libc 5.2.19.
-.LP
-To get the prototype under glibc, define both
-.BR _XOPEN_SOURCE
-and
-.BR _XOPEN_SOURCE_EXTENDED ,
-or use "#define _XOPEN_SOURCE \fIn\fP"
-for some integer \fIn\fP larger than or equal to 500.
-.SH "SEE ALSO"
+.PP
+See
+.BR credentials (7)
+for a description of sessions and session IDs.
+.SH SEE ALSO
.BR getpgid (2),
.BR setsid (2),
-.BR credentials (7),
-.BR feature_test_macros (7)
+.BR credentials (7)