#include <unistd.h>char *ttyname(int fildes);
cc [ flag ...] file ... -D_POSIX_PTHREAD_SEMANTICS [ library ... ]int ttyname_r(int fildes, char *name, size_t namesize);
The ttyname() function returns a pointer to a string containing the null-terminated path name of the terminal device associated with file descriptor fildes. The return value may point to static data whose content is overwritten by each call.
The ttyname_r() function has the same functionality as ttyname() except that the caller must supply a buffer name with length namelen to store the result; this buffer must be at least _POSIX_PATH_MAX in size (defined in <limits.h>). The POSIX version (see standards(5)) of ttyname_r() takes a namesize parameter of type size_t.
Upon successful completion, ttyname() and ttyname_r() return a pointer to a string. Otherwise, a null pointer is returned and errno is set to indicate the error.
The POSIX ttyname_r() returns zero if successful, or the error number upon failure.
The ttyname_r() function will fail if:
The size of the buffer is smaller than the result to be returned.
The ttyname() function may fail if:
The fildes argument is not a valid file descriptor.
The fildes argument does not refer to a terminal device.
See attributes(5) for descriptions of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|
|MT-Level||See NOTES below.|
When compiling multithreaded programs, see Intro(3), Notes On Multithreaded Applications.
If the application is linked with -lintl, then messages printed from this function are in the native language specified by the LC_MESSAGES locale category; see setlocale(3C).
The return value points to static data whose content is overwritten by each call.
The ttyname() is Unsafe in multithreaded applications. The ttyname_r() function is MT-Safe, and should be used instead.
Solaris 2.4 and earlier releases provided definitions of the ttyname_r() interface as specified in POSIX.1c Draft 6. The final POSIX.1c standard changed the interface as described above. Support for the Draft 6 interface is provided for compatibility only and may not be supported in future releases. New applications and libraries should use the POSIX standard interface.