.\" %%%LICENSE_START(PUBLIC_DOMAIN)
.\" This page is in the public domain. - aeb
.\" %%%LICENSE_END
.\"
.TH GRANTPT 3 2017-09-15 "GNU" "Linux Programmer's Manual"
.SH NAME
grantpt \- grant access to the terminal device corresponding to a pseudoterminal
.SH SYNOPSIS
.B #include <stdlib.h>
.PP
.BI "int grantpt(int " fd ");"
.PP
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.PP
.ad l
.BR grantpt ():
.br
.RS 4
Since glibc 2.24:
    _XOPEN_SOURCE\ >=\ 500 ||
        (_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED)
.br
Glibc 2.23 and earlier:
    _XOPEN_SOURCE
.RE
.ad
.SH DESCRIPTION
The
.BR grantpt ()
function changes the mode and owner of the terminal device
corresponding to the pseudoterminal device referred to by the file descriptor
.IR fd .
The user ID of the terminal device
is set to the real UID of the calling process.
The group ID is set to an unspecified value (e.g.,
.IR tty ).
The mode of the terminal device is set to 0620 (crw\-\-w\-\-\-\-).
.PP
The behavior of
.BR grantpt ()
is unspecified if a signal handler is installed to catch
.B SIGCHLD
signals.
.SH RETURN VALUE
When successful,
.BR grantpt ()
returns 0.
Otherwise, it returns \-1 and sets
.I errno
appropriately.
.SH ERRORS
.TP
.B EACCES
The corresponding terminal device could not be accessed.
.TP
.B EBADF
The
.I fd
argument is not a valid open file descriptor.
.TP
.B EINVAL
The
.I fd
argument is valid but not associated with a pseudoterminal device.
.SH VERSIONS
.BR grantpt ()
is provided in glibc since version 2.1.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lb lb lb
l l l.
Interface	Attribute	Value
T{
.BR grantpt ()
T}	Thread safety	MT-Safe locale
.TE
.sp 1
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008.
.SH NOTES
This is part of the UNIX 98 pseudoterminal support, see
.BR pts (4).
.PP
Many systems implement this function via a set-user-ID helper binary
called "pt_chown".
On Linux systems with a devpts filesystem (present since Linux 2.2),
the kernel normally sets the correct ownership and permissions
for the corresponding terminal device when the pseudoterminal device is opened
.RB ( posix_openpt (3)),
so that nothing must be done by
.BR grantpt ().
Thus, no such helper binary is required
(and indeed it is configured to be absent during the
glibc build that is typical on many systems).
.SH SEE ALSO
.BR open (2),
.BR posix_openpt (3),
.BR ptsname (3),
.BR unlockpt (3),
.BR pts (4),
.BR pty (7)
