| .\" %%%LICENSE_START(PUBLIC_DOMAIN) |
| .\" This page is in the public domain. - aeb |
| .\" %%%LICENSE_END |
| .\" |
| .TH GRANTPT 3 2021-03-22 "GNU" "Linux Programmer's Manual" |
| .SH NAME |
| grantpt \- grant access to the slave pseudoterminal |
| .SH SYNOPSIS |
| .nf |
| .B #include <stdlib.h> |
| .PP |
| .BI "int grantpt(int " fd ");" |
| .fi |
| .PP |
| .RS -4 |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .RE |
| .PP |
| .BR grantpt (): |
| .nf |
| Since glibc 2.24: |
| _XOPEN_SOURCE >= 500 |
| .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) |
| Glibc 2.23 and earlier: |
| _XOPEN_SOURCE |
| .fi |
| .SH DESCRIPTION |
| The |
| .BR grantpt () |
| function changes the mode and owner of the slave pseudoterminal device |
| corresponding to the master pseudoterminal referred to by the file descriptor |
| .IR fd . |
| The user ID of the slave 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 slave 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 |
| to indicate the error. |
| .SH ERRORS |
| .TP |
| .B EACCES |
| The corresponding slave pseudoterminal 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 master pseudoterminal. |
| .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). |
| .ad l |
| .nh |
| .TS |
| allbox; |
| lbx lb lb |
| l l l. |
| Interface Attribute Value |
| T{ |
| .BR grantpt () |
| T} Thread safety MT-Safe locale |
| .TE |
| .hy |
| .ad |
| .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 pseudoterminal slave when the master 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) |