| This is libc.info, produced by makeinfo version 5.2 from libc.texinfo. |
| |
| This file documents the GNU C Library. |
| |
| This is 'The GNU C Library Reference Manual', for version 2.19 |
| (Buildroot). |
| |
| Copyright (C) 1993-2014 Free Software Foundation, Inc. |
| |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.3 or |
| any later version published by the Free Software Foundation; with the |
| Invariant Sections being "Free Software Needs Free Documentation" and |
| "GNU Lesser General Public License", the Front-Cover texts being "A GNU |
| Manual", and with the Back-Cover Texts as in (a) below. A copy of the |
| license is included in the section entitled "GNU Free Documentation |
| License". |
| |
| (a) The FSF's Back-Cover Text is: "You have the freedom to copy and |
| modify this GNU manual. Buying copies from the FSF supports it in |
| developing GNU and promoting software freedom." |
| INFO-DIR-SECTION Software libraries |
| START-INFO-DIR-ENTRY |
| * Libc: (libc). C library. |
| END-INFO-DIR-ENTRY |
| |
| INFO-DIR-SECTION GNU C library functions and macros |
| START-INFO-DIR-ENTRY |
| * ALTWERASE: (libc)Local Modes. |
| * ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions. |
| * ARG_MAX: (libc)General Limits. |
| * BC_BASE_MAX: (libc)Utility Limits. |
| * BC_DIM_MAX: (libc)Utility Limits. |
| * BC_SCALE_MAX: (libc)Utility Limits. |
| * BC_STRING_MAX: (libc)Utility Limits. |
| * BRKINT: (libc)Input Modes. |
| * BUFSIZ: (libc)Controlling Buffering. |
| * CCTS_OFLOW: (libc)Control Modes. |
| * CHILD_MAX: (libc)General Limits. |
| * CIGNORE: (libc)Control Modes. |
| * CLK_TCK: (libc)Processor Time. |
| * CLOCAL: (libc)Control Modes. |
| * CLOCKS_PER_SEC: (libc)CPU Time. |
| * COLL_WEIGHTS_MAX: (libc)Utility Limits. |
| * CPU_CLR: (libc)CPU Affinity. |
| * CPU_ISSET: (libc)CPU Affinity. |
| * CPU_SET: (libc)CPU Affinity. |
| * CPU_SETSIZE: (libc)CPU Affinity. |
| * CPU_ZERO: (libc)CPU Affinity. |
| * CREAD: (libc)Control Modes. |
| * CRTS_IFLOW: (libc)Control Modes. |
| * CS5: (libc)Control Modes. |
| * CS6: (libc)Control Modes. |
| * CS7: (libc)Control Modes. |
| * CS8: (libc)Control Modes. |
| * CSIZE: (libc)Control Modes. |
| * CSTOPB: (libc)Control Modes. |
| * DES_FAILED: (libc)DES Encryption. |
| * DTTOIF: (libc)Directory Entries. |
| * E2BIG: (libc)Error Codes. |
| * EACCES: (libc)Error Codes. |
| * EADDRINUSE: (libc)Error Codes. |
| * EADDRNOTAVAIL: (libc)Error Codes. |
| * EADV: (libc)Error Codes. |
| * EAFNOSUPPORT: (libc)Error Codes. |
| * EAGAIN: (libc)Error Codes. |
| * EALREADY: (libc)Error Codes. |
| * EAUTH: (libc)Error Codes. |
| * EBACKGROUND: (libc)Error Codes. |
| * EBADE: (libc)Error Codes. |
| * EBADF: (libc)Error Codes. |
| * EBADFD: (libc)Error Codes. |
| * EBADMSG: (libc)Error Codes. |
| * EBADR: (libc)Error Codes. |
| * EBADRPC: (libc)Error Codes. |
| * EBADRQC: (libc)Error Codes. |
| * EBADSLT: (libc)Error Codes. |
| * EBFONT: (libc)Error Codes. |
| * EBUSY: (libc)Error Codes. |
| * ECANCELED: (libc)Error Codes. |
| * ECHILD: (libc)Error Codes. |
| * ECHO: (libc)Local Modes. |
| * ECHOCTL: (libc)Local Modes. |
| * ECHOE: (libc)Local Modes. |
| * ECHOK: (libc)Local Modes. |
| * ECHOKE: (libc)Local Modes. |
| * ECHONL: (libc)Local Modes. |
| * ECHOPRT: (libc)Local Modes. |
| * ECHRNG: (libc)Error Codes. |
| * ECOMM: (libc)Error Codes. |
| * ECONNABORTED: (libc)Error Codes. |
| * ECONNREFUSED: (libc)Error Codes. |
| * ECONNRESET: (libc)Error Codes. |
| * ED: (libc)Error Codes. |
| * EDEADLK: (libc)Error Codes. |
| * EDEADLOCK: (libc)Error Codes. |
| * EDESTADDRREQ: (libc)Error Codes. |
| * EDIED: (libc)Error Codes. |
| * EDOM: (libc)Error Codes. |
| * EDOTDOT: (libc)Error Codes. |
| * EDQUOT: (libc)Error Codes. |
| * EEXIST: (libc)Error Codes. |
| * EFAULT: (libc)Error Codes. |
| * EFBIG: (libc)Error Codes. |
| * EFTYPE: (libc)Error Codes. |
| * EGRATUITOUS: (libc)Error Codes. |
| * EGREGIOUS: (libc)Error Codes. |
| * EHOSTDOWN: (libc)Error Codes. |
| * EHOSTUNREACH: (libc)Error Codes. |
| * EHWPOISON: (libc)Error Codes. |
| * EIDRM: (libc)Error Codes. |
| * EIEIO: (libc)Error Codes. |
| * EILSEQ: (libc)Error Codes. |
| * EINPROGRESS: (libc)Error Codes. |
| * EINTR: (libc)Error Codes. |
| * EINVAL: (libc)Error Codes. |
| * EIO: (libc)Error Codes. |
| * EISCONN: (libc)Error Codes. |
| * EISDIR: (libc)Error Codes. |
| * EISNAM: (libc)Error Codes. |
| * EKEYEXPIRED: (libc)Error Codes. |
| * EKEYREJECTED: (libc)Error Codes. |
| * EKEYREVOKED: (libc)Error Codes. |
| * EL2HLT: (libc)Error Codes. |
| * EL2NSYNC: (libc)Error Codes. |
| * EL3HLT: (libc)Error Codes. |
| * EL3RST: (libc)Error Codes. |
| * ELIBACC: (libc)Error Codes. |
| * ELIBBAD: (libc)Error Codes. |
| * ELIBEXEC: (libc)Error Codes. |
| * ELIBMAX: (libc)Error Codes. |
| * ELIBSCN: (libc)Error Codes. |
| * ELNRNG: (libc)Error Codes. |
| * ELOOP: (libc)Error Codes. |
| * EMEDIUMTYPE: (libc)Error Codes. |
| * EMFILE: (libc)Error Codes. |
| * EMLINK: (libc)Error Codes. |
| * EMSGSIZE: (libc)Error Codes. |
| * EMULTIHOP: (libc)Error Codes. |
| * ENAMETOOLONG: (libc)Error Codes. |
| * ENAVAIL: (libc)Error Codes. |
| * ENEEDAUTH: (libc)Error Codes. |
| * ENETDOWN: (libc)Error Codes. |
| * ENETRESET: (libc)Error Codes. |
| * ENETUNREACH: (libc)Error Codes. |
| * ENFILE: (libc)Error Codes. |
| * ENOANO: (libc)Error Codes. |
| * ENOBUFS: (libc)Error Codes. |
| * ENOCSI: (libc)Error Codes. |
| * ENODATA: (libc)Error Codes. |
| * ENODEV: (libc)Error Codes. |
| * ENOENT: (libc)Error Codes. |
| * ENOEXEC: (libc)Error Codes. |
| * ENOKEY: (libc)Error Codes. |
| * ENOLCK: (libc)Error Codes. |
| * ENOLINK: (libc)Error Codes. |
| * ENOMEDIUM: (libc)Error Codes. |
| * ENOMEM: (libc)Error Codes. |
| * ENOMSG: (libc)Error Codes. |
| * ENONET: (libc)Error Codes. |
| * ENOPKG: (libc)Error Codes. |
| * ENOPROTOOPT: (libc)Error Codes. |
| * ENOSPC: (libc)Error Codes. |
| * ENOSR: (libc)Error Codes. |
| * ENOSTR: (libc)Error Codes. |
| * ENOSYS: (libc)Error Codes. |
| * ENOTBLK: (libc)Error Codes. |
| * ENOTCONN: (libc)Error Codes. |
| * ENOTDIR: (libc)Error Codes. |
| * ENOTEMPTY: (libc)Error Codes. |
| * ENOTNAM: (libc)Error Codes. |
| * ENOTRECOVERABLE: (libc)Error Codes. |
| * ENOTSOCK: (libc)Error Codes. |
| * ENOTSUP: (libc)Error Codes. |
| * ENOTTY: (libc)Error Codes. |
| * ENOTUNIQ: (libc)Error Codes. |
| * ENXIO: (libc)Error Codes. |
| * EOF: (libc)EOF and Errors. |
| * EOPNOTSUPP: (libc)Error Codes. |
| * EOVERFLOW: (libc)Error Codes. |
| * EOWNERDEAD: (libc)Error Codes. |
| * EPERM: (libc)Error Codes. |
| * EPFNOSUPPORT: (libc)Error Codes. |
| * EPIPE: (libc)Error Codes. |
| * EPROCLIM: (libc)Error Codes. |
| * EPROCUNAVAIL: (libc)Error Codes. |
| * EPROGMISMATCH: (libc)Error Codes. |
| * EPROGUNAVAIL: (libc)Error Codes. |
| * EPROTO: (libc)Error Codes. |
| * EPROTONOSUPPORT: (libc)Error Codes. |
| * EPROTOTYPE: (libc)Error Codes. |
| * EQUIV_CLASS_MAX: (libc)Utility Limits. |
| * ERANGE: (libc)Error Codes. |
| * EREMCHG: (libc)Error Codes. |
| * EREMOTE: (libc)Error Codes. |
| * EREMOTEIO: (libc)Error Codes. |
| * ERESTART: (libc)Error Codes. |
| * ERFKILL: (libc)Error Codes. |
| * EROFS: (libc)Error Codes. |
| * ERPCMISMATCH: (libc)Error Codes. |
| * ESHUTDOWN: (libc)Error Codes. |
| * ESOCKTNOSUPPORT: (libc)Error Codes. |
| * ESPIPE: (libc)Error Codes. |
| * ESRCH: (libc)Error Codes. |
| * ESRMNT: (libc)Error Codes. |
| * ESTALE: (libc)Error Codes. |
| * ESTRPIPE: (libc)Error Codes. |
| * ETIME: (libc)Error Codes. |
| * ETIMEDOUT: (libc)Error Codes. |
| * ETOOMANYREFS: (libc)Error Codes. |
| * ETXTBSY: (libc)Error Codes. |
| * EUCLEAN: (libc)Error Codes. |
| * EUNATCH: (libc)Error Codes. |
| * EUSERS: (libc)Error Codes. |
| * EWOULDBLOCK: (libc)Error Codes. |
| * EXDEV: (libc)Error Codes. |
| * EXFULL: (libc)Error Codes. |
| * EXIT_FAILURE: (libc)Exit Status. |
| * EXIT_SUCCESS: (libc)Exit Status. |
| * EXPR_NEST_MAX: (libc)Utility Limits. |
| * FD_CLOEXEC: (libc)Descriptor Flags. |
| * FD_CLR: (libc)Waiting for I/O. |
| * FD_ISSET: (libc)Waiting for I/O. |
| * FD_SET: (libc)Waiting for I/O. |
| * FD_SETSIZE: (libc)Waiting for I/O. |
| * FD_ZERO: (libc)Waiting for I/O. |
| * FILENAME_MAX: (libc)Limits for Files. |
| * FLUSHO: (libc)Local Modes. |
| * FOPEN_MAX: (libc)Opening Streams. |
| * FP_ILOGB0: (libc)Exponents and Logarithms. |
| * FP_ILOGBNAN: (libc)Exponents and Logarithms. |
| * F_DUPFD: (libc)Duplicating Descriptors. |
| * F_GETFD: (libc)Descriptor Flags. |
| * F_GETFL: (libc)Getting File Status Flags. |
| * F_GETLK: (libc)File Locks. |
| * F_GETOWN: (libc)Interrupt Input. |
| * F_OK: (libc)Testing File Access. |
| * F_SETFD: (libc)Descriptor Flags. |
| * F_SETFL: (libc)Getting File Status Flags. |
| * F_SETLK: (libc)File Locks. |
| * F_SETLKW: (libc)File Locks. |
| * F_SETOWN: (libc)Interrupt Input. |
| * HUGE_VAL: (libc)Math Error Reporting. |
| * HUGE_VALF: (libc)Math Error Reporting. |
| * HUGE_VALL: (libc)Math Error Reporting. |
| * HUPCL: (libc)Control Modes. |
| * I: (libc)Complex Numbers. |
| * ICANON: (libc)Local Modes. |
| * ICRNL: (libc)Input Modes. |
| * IEXTEN: (libc)Local Modes. |
| * IFNAMSIZ: (libc)Interface Naming. |
| * IFTODT: (libc)Directory Entries. |
| * IGNBRK: (libc)Input Modes. |
| * IGNCR: (libc)Input Modes. |
| * IGNPAR: (libc)Input Modes. |
| * IMAXBEL: (libc)Input Modes. |
| * INADDR_ANY: (libc)Host Address Data Type. |
| * INADDR_BROADCAST: (libc)Host Address Data Type. |
| * INADDR_LOOPBACK: (libc)Host Address Data Type. |
| * INADDR_NONE: (libc)Host Address Data Type. |
| * INFINITY: (libc)Infinity and NaN. |
| * INLCR: (libc)Input Modes. |
| * INPCK: (libc)Input Modes. |
| * IPPORT_RESERVED: (libc)Ports. |
| * IPPORT_USERRESERVED: (libc)Ports. |
| * ISIG: (libc)Local Modes. |
| * ISTRIP: (libc)Input Modes. |
| * IXANY: (libc)Input Modes. |
| * IXOFF: (libc)Input Modes. |
| * IXON: (libc)Input Modes. |
| * LINE_MAX: (libc)Utility Limits. |
| * LINK_MAX: (libc)Limits for Files. |
| * L_ctermid: (libc)Identifying the Terminal. |
| * L_cuserid: (libc)Who Logged In. |
| * L_tmpnam: (libc)Temporary Files. |
| * MAXNAMLEN: (libc)Limits for Files. |
| * MAXSYMLINKS: (libc)Symbolic Links. |
| * MAX_CANON: (libc)Limits for Files. |
| * MAX_INPUT: (libc)Limits for Files. |
| * MB_CUR_MAX: (libc)Selecting the Conversion. |
| * MB_LEN_MAX: (libc)Selecting the Conversion. |
| * MDMBUF: (libc)Control Modes. |
| * MSG_DONTROUTE: (libc)Socket Data Options. |
| * MSG_OOB: (libc)Socket Data Options. |
| * MSG_PEEK: (libc)Socket Data Options. |
| * NAME_MAX: (libc)Limits for Files. |
| * NAN: (libc)Infinity and NaN. |
| * NCCS: (libc)Mode Data Types. |
| * NGROUPS_MAX: (libc)General Limits. |
| * NOFLSH: (libc)Local Modes. |
| * NOKERNINFO: (libc)Local Modes. |
| * NSIG: (libc)Standard Signals. |
| * NULL: (libc)Null Pointer Constant. |
| * ONLCR: (libc)Output Modes. |
| * ONOEOT: (libc)Output Modes. |
| * OPEN_MAX: (libc)General Limits. |
| * OPOST: (libc)Output Modes. |
| * OXTABS: (libc)Output Modes. |
| * O_ACCMODE: (libc)Access Modes. |
| * O_APPEND: (libc)Operating Modes. |
| * O_ASYNC: (libc)Operating Modes. |
| * O_CREAT: (libc)Open-time Flags. |
| * O_EXCL: (libc)Open-time Flags. |
| * O_EXEC: (libc)Access Modes. |
| * O_EXLOCK: (libc)Open-time Flags. |
| * O_FSYNC: (libc)Operating Modes. |
| * O_IGNORE_CTTY: (libc)Open-time Flags. |
| * O_NDELAY: (libc)Operating Modes. |
| * O_NOATIME: (libc)Operating Modes. |
| * O_NOCTTY: (libc)Open-time Flags. |
| * O_NOLINK: (libc)Open-time Flags. |
| * O_NONBLOCK: (libc)Open-time Flags. |
| * O_NONBLOCK: (libc)Operating Modes. |
| * O_NOTRANS: (libc)Open-time Flags. |
| * O_RDONLY: (libc)Access Modes. |
| * O_RDWR: (libc)Access Modes. |
| * O_READ: (libc)Access Modes. |
| * O_SHLOCK: (libc)Open-time Flags. |
| * O_SYNC: (libc)Operating Modes. |
| * O_TRUNC: (libc)Open-time Flags. |
| * O_WRITE: (libc)Access Modes. |
| * O_WRONLY: (libc)Access Modes. |
| * PARENB: (libc)Control Modes. |
| * PARMRK: (libc)Input Modes. |
| * PARODD: (libc)Control Modes. |
| * PATH_MAX: (libc)Limits for Files. |
| * PA_FLAG_MASK: (libc)Parsing a Template String. |
| * PENDIN: (libc)Local Modes. |
| * PF_FILE: (libc)Local Namespace Details. |
| * PF_INET6: (libc)Internet Namespace. |
| * PF_INET: (libc)Internet Namespace. |
| * PF_LOCAL: (libc)Local Namespace Details. |
| * PF_UNIX: (libc)Local Namespace Details. |
| * PIPE_BUF: (libc)Limits for Files. |
| * P_tmpdir: (libc)Temporary Files. |
| * RAND_MAX: (libc)ISO Random. |
| * RE_DUP_MAX: (libc)General Limits. |
| * RLIM_INFINITY: (libc)Limits on Resources. |
| * R_OK: (libc)Testing File Access. |
| * SA_NOCLDSTOP: (libc)Flags for Sigaction. |
| * SA_ONSTACK: (libc)Flags for Sigaction. |
| * SA_RESTART: (libc)Flags for Sigaction. |
| * SEEK_CUR: (libc)File Positioning. |
| * SEEK_END: (libc)File Positioning. |
| * SEEK_SET: (libc)File Positioning. |
| * SIGABRT: (libc)Program Error Signals. |
| * SIGALRM: (libc)Alarm Signals. |
| * SIGBUS: (libc)Program Error Signals. |
| * SIGCHLD: (libc)Job Control Signals. |
| * SIGCLD: (libc)Job Control Signals. |
| * SIGCONT: (libc)Job Control Signals. |
| * SIGEMT: (libc)Program Error Signals. |
| * SIGFPE: (libc)Program Error Signals. |
| * SIGHUP: (libc)Termination Signals. |
| * SIGILL: (libc)Program Error Signals. |
| * SIGINFO: (libc)Miscellaneous Signals. |
| * SIGINT: (libc)Termination Signals. |
| * SIGIO: (libc)Asynchronous I/O Signals. |
| * SIGIOT: (libc)Program Error Signals. |
| * SIGKILL: (libc)Termination Signals. |
| * SIGLOST: (libc)Operation Error Signals. |
| * SIGPIPE: (libc)Operation Error Signals. |
| * SIGPOLL: (libc)Asynchronous I/O Signals. |
| * SIGPROF: (libc)Alarm Signals. |
| * SIGQUIT: (libc)Termination Signals. |
| * SIGSEGV: (libc)Program Error Signals. |
| * SIGSTOP: (libc)Job Control Signals. |
| * SIGSYS: (libc)Program Error Signals. |
| * SIGTERM: (libc)Termination Signals. |
| * SIGTRAP: (libc)Program Error Signals. |
| * SIGTSTP: (libc)Job Control Signals. |
| * SIGTTIN: (libc)Job Control Signals. |
| * SIGTTOU: (libc)Job Control Signals. |
| * SIGURG: (libc)Asynchronous I/O Signals. |
| * SIGUSR1: (libc)Miscellaneous Signals. |
| * SIGUSR2: (libc)Miscellaneous Signals. |
| * SIGVTALRM: (libc)Alarm Signals. |
| * SIGWINCH: (libc)Miscellaneous Signals. |
| * SIGXCPU: (libc)Operation Error Signals. |
| * SIGXFSZ: (libc)Operation Error Signals. |
| * SIG_ERR: (libc)Basic Signal Handling. |
| * SOCK_DGRAM: (libc)Communication Styles. |
| * SOCK_RAW: (libc)Communication Styles. |
| * SOCK_RDM: (libc)Communication Styles. |
| * SOCK_SEQPACKET: (libc)Communication Styles. |
| * SOCK_STREAM: (libc)Communication Styles. |
| * SOL_SOCKET: (libc)Socket-Level Options. |
| * SSIZE_MAX: (libc)General Limits. |
| * STREAM_MAX: (libc)General Limits. |
| * SUN_LEN: (libc)Local Namespace Details. |
| * SV_INTERRUPT: (libc)BSD Handler. |
| * SV_ONSTACK: (libc)BSD Handler. |
| * SV_RESETHAND: (libc)BSD Handler. |
| * S_IFMT: (libc)Testing File Type. |
| * S_ISBLK: (libc)Testing File Type. |
| * S_ISCHR: (libc)Testing File Type. |
| * S_ISDIR: (libc)Testing File Type. |
| * S_ISFIFO: (libc)Testing File Type. |
| * S_ISLNK: (libc)Testing File Type. |
| * S_ISREG: (libc)Testing File Type. |
| * S_ISSOCK: (libc)Testing File Type. |
| * S_TYPEISMQ: (libc)Testing File Type. |
| * S_TYPEISSEM: (libc)Testing File Type. |
| * S_TYPEISSHM: (libc)Testing File Type. |
| * TMP_MAX: (libc)Temporary Files. |
| * TOSTOP: (libc)Local Modes. |
| * TZNAME_MAX: (libc)General Limits. |
| * VDISCARD: (libc)Other Special. |
| * VDSUSP: (libc)Signal Characters. |
| * VEOF: (libc)Editing Characters. |
| * VEOL2: (libc)Editing Characters. |
| * VEOL: (libc)Editing Characters. |
| * VERASE: (libc)Editing Characters. |
| * VINTR: (libc)Signal Characters. |
| * VKILL: (libc)Editing Characters. |
| * VLNEXT: (libc)Other Special. |
| * VMIN: (libc)Noncanonical Input. |
| * VQUIT: (libc)Signal Characters. |
| * VREPRINT: (libc)Editing Characters. |
| * VSTART: (libc)Start/Stop Characters. |
| * VSTATUS: (libc)Other Special. |
| * VSTOP: (libc)Start/Stop Characters. |
| * VSUSP: (libc)Signal Characters. |
| * VTIME: (libc)Noncanonical Input. |
| * VWERASE: (libc)Editing Characters. |
| * WCHAR_MAX: (libc)Extended Char Intro. |
| * WCHAR_MIN: (libc)Extended Char Intro. |
| * WCOREDUMP: (libc)Process Completion Status. |
| * WEOF: (libc)EOF and Errors. |
| * WEOF: (libc)Extended Char Intro. |
| * WEXITSTATUS: (libc)Process Completion Status. |
| * WIFEXITED: (libc)Process Completion Status. |
| * WIFSIGNALED: (libc)Process Completion Status. |
| * WIFSTOPPED: (libc)Process Completion Status. |
| * WSTOPSIG: (libc)Process Completion Status. |
| * WTERMSIG: (libc)Process Completion Status. |
| * W_OK: (libc)Testing File Access. |
| * X_OK: (libc)Testing File Access. |
| * _Complex_I: (libc)Complex Numbers. |
| * _Exit: (libc)Termination Internals. |
| * _IOFBF: (libc)Controlling Buffering. |
| * _IOLBF: (libc)Controlling Buffering. |
| * _IONBF: (libc)Controlling Buffering. |
| * _Imaginary_I: (libc)Complex Numbers. |
| * _PATH_UTMP: (libc)Manipulating the Database. |
| * _PATH_WTMP: (libc)Manipulating the Database. |
| * _POSIX2_C_DEV: (libc)System Options. |
| * _POSIX2_C_VERSION: (libc)Version Supported. |
| * _POSIX2_FORT_DEV: (libc)System Options. |
| * _POSIX2_FORT_RUN: (libc)System Options. |
| * _POSIX2_LOCALEDEF: (libc)System Options. |
| * _POSIX2_SW_DEV: (libc)System Options. |
| * _POSIX_CHOWN_RESTRICTED: (libc)Options for Files. |
| * _POSIX_JOB_CONTROL: (libc)System Options. |
| * _POSIX_NO_TRUNC: (libc)Options for Files. |
| * _POSIX_SAVED_IDS: (libc)System Options. |
| * _POSIX_VDISABLE: (libc)Options for Files. |
| * _POSIX_VERSION: (libc)Version Supported. |
| * __fbufsize: (libc)Controlling Buffering. |
| * __flbf: (libc)Controlling Buffering. |
| * __fpending: (libc)Controlling Buffering. |
| * __fpurge: (libc)Flushing Buffers. |
| * __freadable: (libc)Opening Streams. |
| * __freading: (libc)Opening Streams. |
| * __fsetlocking: (libc)Streams and Threads. |
| * __fwritable: (libc)Opening Streams. |
| * __fwriting: (libc)Opening Streams. |
| * __gconv_end_fct: (libc)glibc iconv Implementation. |
| * __gconv_fct: (libc)glibc iconv Implementation. |
| * __gconv_init_fct: (libc)glibc iconv Implementation. |
| * __ppc_get_timebase: (libc)PowerPC. |
| * __ppc_get_timebase_freq: (libc)PowerPC. |
| * __ppc_mdoio: (libc)PowerPC. |
| * __ppc_mdoom: (libc)PowerPC. |
| * __ppc_set_ppr_low: (libc)PowerPC. |
| * __ppc_set_ppr_med: (libc)PowerPC. |
| * __ppc_set_ppr_med_low: (libc)PowerPC. |
| * __ppc_yield: (libc)PowerPC. |
| * __va_copy: (libc)Argument Macros. |
| * _exit: (libc)Termination Internals. |
| * _flushlbf: (libc)Flushing Buffers. |
| * _tolower: (libc)Case Conversion. |
| * _toupper: (libc)Case Conversion. |
| * a64l: (libc)Encode Binary Data. |
| * abort: (libc)Aborting a Program. |
| * abs: (libc)Absolute Value. |
| * accept: (libc)Accepting Connections. |
| * access: (libc)Testing File Access. |
| * acos: (libc)Inverse Trig Functions. |
| * acosf: (libc)Inverse Trig Functions. |
| * acosh: (libc)Hyperbolic Functions. |
| * acoshf: (libc)Hyperbolic Functions. |
| * acoshl: (libc)Hyperbolic Functions. |
| * acosl: (libc)Inverse Trig Functions. |
| * addmntent: (libc)mtab. |
| * addseverity: (libc)Adding Severity Classes. |
| * adjtime: (libc)High-Resolution Calendar. |
| * adjtimex: (libc)High-Resolution Calendar. |
| * aio_cancel64: (libc)Cancel AIO Operations. |
| * aio_cancel: (libc)Cancel AIO Operations. |
| * aio_error64: (libc)Status of AIO Operations. |
| * aio_error: (libc)Status of AIO Operations. |
| * aio_fsync64: (libc)Synchronizing AIO Operations. |
| * aio_fsync: (libc)Synchronizing AIO Operations. |
| * aio_init: (libc)Configuration of AIO. |
| * aio_read64: (libc)Asynchronous Reads/Writes. |
| * aio_read: (libc)Asynchronous Reads/Writes. |
| * aio_return64: (libc)Status of AIO Operations. |
| * aio_return: (libc)Status of AIO Operations. |
| * aio_suspend64: (libc)Synchronizing AIO Operations. |
| * aio_suspend: (libc)Synchronizing AIO Operations. |
| * aio_write64: (libc)Asynchronous Reads/Writes. |
| * aio_write: (libc)Asynchronous Reads/Writes. |
| * alarm: (libc)Setting an Alarm. |
| * aligned_alloc: (libc)Aligned Memory Blocks. |
| * alloca: (libc)Variable Size Automatic. |
| * alphasort64: (libc)Scanning Directory Content. |
| * alphasort: (libc)Scanning Directory Content. |
| * argp_error: (libc)Argp Helper Functions. |
| * argp_failure: (libc)Argp Helper Functions. |
| * argp_help: (libc)Argp Help. |
| * argp_parse: (libc)Argp. |
| * argp_state_help: (libc)Argp Helper Functions. |
| * argp_usage: (libc)Argp Helper Functions. |
| * argz_add: (libc)Argz Functions. |
| * argz_add_sep: (libc)Argz Functions. |
| * argz_append: (libc)Argz Functions. |
| * argz_count: (libc)Argz Functions. |
| * argz_create: (libc)Argz Functions. |
| * argz_create_sep: (libc)Argz Functions. |
| * argz_delete: (libc)Argz Functions. |
| * argz_extract: (libc)Argz Functions. |
| * argz_insert: (libc)Argz Functions. |
| * argz_next: (libc)Argz Functions. |
| * argz_replace: (libc)Argz Functions. |
| * argz_stringify: (libc)Argz Functions. |
| * asctime: (libc)Formatting Calendar Time. |
| * asctime_r: (libc)Formatting Calendar Time. |
| * asin: (libc)Inverse Trig Functions. |
| * asinf: (libc)Inverse Trig Functions. |
| * asinh: (libc)Hyperbolic Functions. |
| * asinhf: (libc)Hyperbolic Functions. |
| * asinhl: (libc)Hyperbolic Functions. |
| * asinl: (libc)Inverse Trig Functions. |
| * asprintf: (libc)Dynamic Output. |
| * assert: (libc)Consistency Checking. |
| * assert_perror: (libc)Consistency Checking. |
| * atan2: (libc)Inverse Trig Functions. |
| * atan2f: (libc)Inverse Trig Functions. |
| * atan2l: (libc)Inverse Trig Functions. |
| * atan: (libc)Inverse Trig Functions. |
| * atanf: (libc)Inverse Trig Functions. |
| * atanh: (libc)Hyperbolic Functions. |
| * atanhf: (libc)Hyperbolic Functions. |
| * atanhl: (libc)Hyperbolic Functions. |
| * atanl: (libc)Inverse Trig Functions. |
| * atexit: (libc)Cleanups on Exit. |
| * atof: (libc)Parsing of Floats. |
| * atoi: (libc)Parsing of Integers. |
| * atol: (libc)Parsing of Integers. |
| * atoll: (libc)Parsing of Integers. |
| * backtrace: (libc)Backtraces. |
| * backtrace_symbols: (libc)Backtraces. |
| * backtrace_symbols_fd: (libc)Backtraces. |
| * basename: (libc)Finding Tokens in a String. |
| * basename: (libc)Finding Tokens in a String. |
| * bcmp: (libc)String/Array Comparison. |
| * bcopy: (libc)Copying and Concatenation. |
| * bind: (libc)Setting Address. |
| * bind_textdomain_codeset: (libc)Charset conversion in gettext. |
| * bindtextdomain: (libc)Locating gettext catalog. |
| * brk: (libc)Resizing the Data Segment. |
| * bsearch: (libc)Array Search Function. |
| * btowc: (libc)Converting a Character. |
| * bzero: (libc)Copying and Concatenation. |
| * cabs: (libc)Absolute Value. |
| * cabsf: (libc)Absolute Value. |
| * cabsl: (libc)Absolute Value. |
| * cacos: (libc)Inverse Trig Functions. |
| * cacosf: (libc)Inverse Trig Functions. |
| * cacosh: (libc)Hyperbolic Functions. |
| * cacoshf: (libc)Hyperbolic Functions. |
| * cacoshl: (libc)Hyperbolic Functions. |
| * cacosl: (libc)Inverse Trig Functions. |
| * calloc: (libc)Allocating Cleared Space. |
| * canonicalize_file_name: (libc)Symbolic Links. |
| * carg: (libc)Operations on Complex. |
| * cargf: (libc)Operations on Complex. |
| * cargl: (libc)Operations on Complex. |
| * casin: (libc)Inverse Trig Functions. |
| * casinf: (libc)Inverse Trig Functions. |
| * casinh: (libc)Hyperbolic Functions. |
| * casinhf: (libc)Hyperbolic Functions. |
| * casinhl: (libc)Hyperbolic Functions. |
| * casinl: (libc)Inverse Trig Functions. |
| * catan: (libc)Inverse Trig Functions. |
| * catanf: (libc)Inverse Trig Functions. |
| * catanh: (libc)Hyperbolic Functions. |
| * catanhf: (libc)Hyperbolic Functions. |
| * catanhl: (libc)Hyperbolic Functions. |
| * catanl: (libc)Inverse Trig Functions. |
| * catclose: (libc)The catgets Functions. |
| * catgets: (libc)The catgets Functions. |
| * catopen: (libc)The catgets Functions. |
| * cbc_crypt: (libc)DES Encryption. |
| * cbrt: (libc)Exponents and Logarithms. |
| * cbrtf: (libc)Exponents and Logarithms. |
| * cbrtl: (libc)Exponents and Logarithms. |
| * ccos: (libc)Trig Functions. |
| * ccosf: (libc)Trig Functions. |
| * ccosh: (libc)Hyperbolic Functions. |
| * ccoshf: (libc)Hyperbolic Functions. |
| * ccoshl: (libc)Hyperbolic Functions. |
| * ccosl: (libc)Trig Functions. |
| * ceil: (libc)Rounding Functions. |
| * ceilf: (libc)Rounding Functions. |
| * ceill: (libc)Rounding Functions. |
| * cexp: (libc)Exponents and Logarithms. |
| * cexpf: (libc)Exponents and Logarithms. |
| * cexpl: (libc)Exponents and Logarithms. |
| * cfgetispeed: (libc)Line Speed. |
| * cfgetospeed: (libc)Line Speed. |
| * cfmakeraw: (libc)Noncanonical Input. |
| * cfree: (libc)Freeing after Malloc. |
| * cfsetispeed: (libc)Line Speed. |
| * cfsetospeed: (libc)Line Speed. |
| * cfsetspeed: (libc)Line Speed. |
| * chdir: (libc)Working Directory. |
| * chmod: (libc)Setting Permissions. |
| * chown: (libc)File Owner. |
| * cimag: (libc)Operations on Complex. |
| * cimagf: (libc)Operations on Complex. |
| * cimagl: (libc)Operations on Complex. |
| * clearenv: (libc)Environment Access. |
| * clearerr: (libc)Error Recovery. |
| * clearerr_unlocked: (libc)Error Recovery. |
| * clock: (libc)CPU Time. |
| * clog10: (libc)Exponents and Logarithms. |
| * clog10f: (libc)Exponents and Logarithms. |
| * clog10l: (libc)Exponents and Logarithms. |
| * clog: (libc)Exponents and Logarithms. |
| * clogf: (libc)Exponents and Logarithms. |
| * clogl: (libc)Exponents and Logarithms. |
| * close: (libc)Opening and Closing Files. |
| * closedir: (libc)Reading/Closing Directory. |
| * closelog: (libc)closelog. |
| * confstr: (libc)String Parameters. |
| * conj: (libc)Operations on Complex. |
| * conjf: (libc)Operations on Complex. |
| * conjl: (libc)Operations on Complex. |
| * connect: (libc)Connecting. |
| * copysign: (libc)FP Bit Twiddling. |
| * copysignf: (libc)FP Bit Twiddling. |
| * copysignl: (libc)FP Bit Twiddling. |
| * cos: (libc)Trig Functions. |
| * cosf: (libc)Trig Functions. |
| * cosh: (libc)Hyperbolic Functions. |
| * coshf: (libc)Hyperbolic Functions. |
| * coshl: (libc)Hyperbolic Functions. |
| * cosl: (libc)Trig Functions. |
| * cpow: (libc)Exponents and Logarithms. |
| * cpowf: (libc)Exponents and Logarithms. |
| * cpowl: (libc)Exponents and Logarithms. |
| * cproj: (libc)Operations on Complex. |
| * cprojf: (libc)Operations on Complex. |
| * cprojl: (libc)Operations on Complex. |
| * creal: (libc)Operations on Complex. |
| * crealf: (libc)Operations on Complex. |
| * creall: (libc)Operations on Complex. |
| * creat64: (libc)Opening and Closing Files. |
| * creat: (libc)Opening and Closing Files. |
| * crypt: (libc)crypt. |
| * crypt_r: (libc)crypt. |
| * csin: (libc)Trig Functions. |
| * csinf: (libc)Trig Functions. |
| * csinh: (libc)Hyperbolic Functions. |
| * csinhf: (libc)Hyperbolic Functions. |
| * csinhl: (libc)Hyperbolic Functions. |
| * csinl: (libc)Trig Functions. |
| * csqrt: (libc)Exponents and Logarithms. |
| * csqrtf: (libc)Exponents and Logarithms. |
| * csqrtl: (libc)Exponents and Logarithms. |
| * ctan: (libc)Trig Functions. |
| * ctanf: (libc)Trig Functions. |
| * ctanh: (libc)Hyperbolic Functions. |
| * ctanhf: (libc)Hyperbolic Functions. |
| * ctanhl: (libc)Hyperbolic Functions. |
| * ctanl: (libc)Trig Functions. |
| * ctermid: (libc)Identifying the Terminal. |
| * ctime: (libc)Formatting Calendar Time. |
| * ctime_r: (libc)Formatting Calendar Time. |
| * cuserid: (libc)Who Logged In. |
| * dcgettext: (libc)Translation with gettext. |
| * dcngettext: (libc)Advanced gettext functions. |
| * des_setparity: (libc)DES Encryption. |
| * dgettext: (libc)Translation with gettext. |
| * difftime: (libc)Elapsed Time. |
| * dirfd: (libc)Opening a Directory. |
| * dirname: (libc)Finding Tokens in a String. |
| * div: (libc)Integer Division. |
| * dngettext: (libc)Advanced gettext functions. |
| * drand48: (libc)SVID Random. |
| * drand48_r: (libc)SVID Random. |
| * drem: (libc)Remainder Functions. |
| * dremf: (libc)Remainder Functions. |
| * dreml: (libc)Remainder Functions. |
| * dup2: (libc)Duplicating Descriptors. |
| * dup: (libc)Duplicating Descriptors. |
| * ecb_crypt: (libc)DES Encryption. |
| * ecvt: (libc)System V Number Conversion. |
| * ecvt_r: (libc)System V Number Conversion. |
| * encrypt: (libc)DES Encryption. |
| * encrypt_r: (libc)DES Encryption. |
| * endfsent: (libc)fstab. |
| * endgrent: (libc)Scanning All Groups. |
| * endhostent: (libc)Host Names. |
| * endmntent: (libc)mtab. |
| * endnetent: (libc)Networks Database. |
| * endnetgrent: (libc)Lookup Netgroup. |
| * endprotoent: (libc)Protocols Database. |
| * endpwent: (libc)Scanning All Users. |
| * endservent: (libc)Services Database. |
| * endutent: (libc)Manipulating the Database. |
| * endutxent: (libc)XPG Functions. |
| * envz_add: (libc)Envz Functions. |
| * envz_entry: (libc)Envz Functions. |
| * envz_get: (libc)Envz Functions. |
| * envz_merge: (libc)Envz Functions. |
| * envz_strip: (libc)Envz Functions. |
| * erand48: (libc)SVID Random. |
| * erand48_r: (libc)SVID Random. |
| * erf: (libc)Special Functions. |
| * erfc: (libc)Special Functions. |
| * erfcf: (libc)Special Functions. |
| * erfcl: (libc)Special Functions. |
| * erff: (libc)Special Functions. |
| * erfl: (libc)Special Functions. |
| * err: (libc)Error Messages. |
| * errno: (libc)Checking for Errors. |
| * error: (libc)Error Messages. |
| * error_at_line: (libc)Error Messages. |
| * errx: (libc)Error Messages. |
| * execl: (libc)Executing a File. |
| * execle: (libc)Executing a File. |
| * execlp: (libc)Executing a File. |
| * execv: (libc)Executing a File. |
| * execve: (libc)Executing a File. |
| * execvp: (libc)Executing a File. |
| * exit: (libc)Normal Termination. |
| * exp10: (libc)Exponents and Logarithms. |
| * exp10f: (libc)Exponents and Logarithms. |
| * exp10l: (libc)Exponents and Logarithms. |
| * exp2: (libc)Exponents and Logarithms. |
| * exp2f: (libc)Exponents and Logarithms. |
| * exp2l: (libc)Exponents and Logarithms. |
| * exp: (libc)Exponents and Logarithms. |
| * expf: (libc)Exponents and Logarithms. |
| * expl: (libc)Exponents and Logarithms. |
| * expm1: (libc)Exponents and Logarithms. |
| * expm1f: (libc)Exponents and Logarithms. |
| * expm1l: (libc)Exponents and Logarithms. |
| * fabs: (libc)Absolute Value. |
| * fabsf: (libc)Absolute Value. |
| * fabsl: (libc)Absolute Value. |
| * fchdir: (libc)Working Directory. |
| * fchmod: (libc)Setting Permissions. |
| * fchown: (libc)File Owner. |
| * fclose: (libc)Closing Streams. |
| * fcloseall: (libc)Closing Streams. |
| * fcntl: (libc)Control Operations. |
| * fcvt: (libc)System V Number Conversion. |
| * fcvt_r: (libc)System V Number Conversion. |
| * fdatasync: (libc)Synchronizing I/O. |
| * fdim: (libc)Misc FP Arithmetic. |
| * fdimf: (libc)Misc FP Arithmetic. |
| * fdiml: (libc)Misc FP Arithmetic. |
| * fdopen: (libc)Descriptors and Streams. |
| * fdopendir: (libc)Opening a Directory. |
| * feclearexcept: (libc)Status bit operations. |
| * fedisableexcept: (libc)Control Functions. |
| * feenableexcept: (libc)Control Functions. |
| * fegetenv: (libc)Control Functions. |
| * fegetexcept: (libc)Control Functions. |
| * fegetexceptflag: (libc)Status bit operations. |
| * fegetround: (libc)Rounding. |
| * feholdexcept: (libc)Control Functions. |
| * feof: (libc)EOF and Errors. |
| * feof_unlocked: (libc)EOF and Errors. |
| * feraiseexcept: (libc)Status bit operations. |
| * ferror: (libc)EOF and Errors. |
| * ferror_unlocked: (libc)EOF and Errors. |
| * fesetenv: (libc)Control Functions. |
| * fesetexceptflag: (libc)Status bit operations. |
| * fesetround: (libc)Rounding. |
| * fetestexcept: (libc)Status bit operations. |
| * feupdateenv: (libc)Control Functions. |
| * fflush: (libc)Flushing Buffers. |
| * fflush_unlocked: (libc)Flushing Buffers. |
| * fgetc: (libc)Character Input. |
| * fgetc_unlocked: (libc)Character Input. |
| * fgetgrent: (libc)Scanning All Groups. |
| * fgetgrent_r: (libc)Scanning All Groups. |
| * fgetpos64: (libc)Portable Positioning. |
| * fgetpos: (libc)Portable Positioning. |
| * fgetpwent: (libc)Scanning All Users. |
| * fgetpwent_r: (libc)Scanning All Users. |
| * fgets: (libc)Line Input. |
| * fgets_unlocked: (libc)Line Input. |
| * fgetwc: (libc)Character Input. |
| * fgetwc_unlocked: (libc)Character Input. |
| * fgetws: (libc)Line Input. |
| * fgetws_unlocked: (libc)Line Input. |
| * fileno: (libc)Descriptors and Streams. |
| * fileno_unlocked: (libc)Descriptors and Streams. |
| * finite: (libc)Floating Point Classes. |
| * finitef: (libc)Floating Point Classes. |
| * finitel: (libc)Floating Point Classes. |
| * flockfile: (libc)Streams and Threads. |
| * floor: (libc)Rounding Functions. |
| * floorf: (libc)Rounding Functions. |
| * floorl: (libc)Rounding Functions. |
| * fma: (libc)Misc FP Arithmetic. |
| * fmaf: (libc)Misc FP Arithmetic. |
| * fmal: (libc)Misc FP Arithmetic. |
| * fmax: (libc)Misc FP Arithmetic. |
| * fmaxf: (libc)Misc FP Arithmetic. |
| * fmaxl: (libc)Misc FP Arithmetic. |
| * fmemopen: (libc)String Streams. |
| * fmin: (libc)Misc FP Arithmetic. |
| * fminf: (libc)Misc FP Arithmetic. |
| * fminl: (libc)Misc FP Arithmetic. |
| * fmod: (libc)Remainder Functions. |
| * fmodf: (libc)Remainder Functions. |
| * fmodl: (libc)Remainder Functions. |
| * fmtmsg: (libc)Printing Formatted Messages. |
| * fnmatch: (libc)Wildcard Matching. |
| * fopen64: (libc)Opening Streams. |
| * fopen: (libc)Opening Streams. |
| * fopencookie: (libc)Streams and Cookies. |
| * fork: (libc)Creating a Process. |
| * forkpty: (libc)Pseudo-Terminal Pairs. |
| * fpathconf: (libc)Pathconf. |
| * fpclassify: (libc)Floating Point Classes. |
| * fprintf: (libc)Formatted Output Functions. |
| * fputc: (libc)Simple Output. |
| * fputc_unlocked: (libc)Simple Output. |
| * fputs: (libc)Simple Output. |
| * fputs_unlocked: (libc)Simple Output. |
| * fputwc: (libc)Simple Output. |
| * fputwc_unlocked: (libc)Simple Output. |
| * fputws: (libc)Simple Output. |
| * fputws_unlocked: (libc)Simple Output. |
| * fread: (libc)Block Input/Output. |
| * fread_unlocked: (libc)Block Input/Output. |
| * free: (libc)Freeing after Malloc. |
| * freopen64: (libc)Opening Streams. |
| * freopen: (libc)Opening Streams. |
| * frexp: (libc)Normalization Functions. |
| * frexpf: (libc)Normalization Functions. |
| * frexpl: (libc)Normalization Functions. |
| * fscanf: (libc)Formatted Input Functions. |
| * fseek: (libc)File Positioning. |
| * fseeko64: (libc)File Positioning. |
| * fseeko: (libc)File Positioning. |
| * fsetpos64: (libc)Portable Positioning. |
| * fsetpos: (libc)Portable Positioning. |
| * fstat64: (libc)Reading Attributes. |
| * fstat: (libc)Reading Attributes. |
| * fsync: (libc)Synchronizing I/O. |
| * ftell: (libc)File Positioning. |
| * ftello64: (libc)File Positioning. |
| * ftello: (libc)File Positioning. |
| * ftruncate64: (libc)File Size. |
| * ftruncate: (libc)File Size. |
| * ftrylockfile: (libc)Streams and Threads. |
| * ftw64: (libc)Working with Directory Trees. |
| * ftw: (libc)Working with Directory Trees. |
| * funlockfile: (libc)Streams and Threads. |
| * futimes: (libc)File Times. |
| * fwide: (libc)Streams and I18N. |
| * fwprintf: (libc)Formatted Output Functions. |
| * fwrite: (libc)Block Input/Output. |
| * fwrite_unlocked: (libc)Block Input/Output. |
| * fwscanf: (libc)Formatted Input Functions. |
| * gamma: (libc)Special Functions. |
| * gammaf: (libc)Special Functions. |
| * gammal: (libc)Special Functions. |
| * gcvt: (libc)System V Number Conversion. |
| * get_avphys_pages: (libc)Query Memory Parameters. |
| * get_current_dir_name: (libc)Working Directory. |
| * get_nprocs: (libc)Processor Resources. |
| * get_nprocs_conf: (libc)Processor Resources. |
| * get_phys_pages: (libc)Query Memory Parameters. |
| * getauxval: (libc)Auxiliary Vector. |
| * getc: (libc)Character Input. |
| * getc_unlocked: (libc)Character Input. |
| * getchar: (libc)Character Input. |
| * getchar_unlocked: (libc)Character Input. |
| * getcontext: (libc)System V contexts. |
| * getcwd: (libc)Working Directory. |
| * getdate: (libc)General Time String Parsing. |
| * getdate_r: (libc)General Time String Parsing. |
| * getdelim: (libc)Line Input. |
| * getdomainnname: (libc)Host Identification. |
| * getegid: (libc)Reading Persona. |
| * getenv: (libc)Environment Access. |
| * geteuid: (libc)Reading Persona. |
| * getfsent: (libc)fstab. |
| * getfsfile: (libc)fstab. |
| * getfsspec: (libc)fstab. |
| * getgid: (libc)Reading Persona. |
| * getgrent: (libc)Scanning All Groups. |
| * getgrent_r: (libc)Scanning All Groups. |
| * getgrgid: (libc)Lookup Group. |
| * getgrgid_r: (libc)Lookup Group. |
| * getgrnam: (libc)Lookup Group. |
| * getgrnam_r: (libc)Lookup Group. |
| * getgrouplist: (libc)Setting Groups. |
| * getgroups: (libc)Reading Persona. |
| * gethostbyaddr: (libc)Host Names. |
| * gethostbyaddr_r: (libc)Host Names. |
| * gethostbyname2: (libc)Host Names. |
| * gethostbyname2_r: (libc)Host Names. |
| * gethostbyname: (libc)Host Names. |
| * gethostbyname_r: (libc)Host Names. |
| * gethostent: (libc)Host Names. |
| * gethostid: (libc)Host Identification. |
| * gethostname: (libc)Host Identification. |
| * getitimer: (libc)Setting an Alarm. |
| * getline: (libc)Line Input. |
| * getloadavg: (libc)Processor Resources. |
| * getlogin: (libc)Who Logged In. |
| * getmntent: (libc)mtab. |
| * getmntent_r: (libc)mtab. |
| * getnetbyaddr: (libc)Networks Database. |
| * getnetbyname: (libc)Networks Database. |
| * getnetent: (libc)Networks Database. |
| * getnetgrent: (libc)Lookup Netgroup. |
| * getnetgrent_r: (libc)Lookup Netgroup. |
| * getopt: (libc)Using Getopt. |
| * getopt_long: (libc)Getopt Long Options. |
| * getopt_long_only: (libc)Getopt Long Options. |
| * getpagesize: (libc)Query Memory Parameters. |
| * getpass: (libc)getpass. |
| * getpeername: (libc)Who is Connected. |
| * getpgid: (libc)Process Group Functions. |
| * getpgrp: (libc)Process Group Functions. |
| * getpid: (libc)Process Identification. |
| * getppid: (libc)Process Identification. |
| * getpriority: (libc)Traditional Scheduling Functions. |
| * getprotobyname: (libc)Protocols Database. |
| * getprotobynumber: (libc)Protocols Database. |
| * getprotoent: (libc)Protocols Database. |
| * getpt: (libc)Allocation. |
| * getpwent: (libc)Scanning All Users. |
| * getpwent_r: (libc)Scanning All Users. |
| * getpwnam: (libc)Lookup User. |
| * getpwnam_r: (libc)Lookup User. |
| * getpwuid: (libc)Lookup User. |
| * getpwuid_r: (libc)Lookup User. |
| * getrlimit64: (libc)Limits on Resources. |
| * getrlimit: (libc)Limits on Resources. |
| * getrusage: (libc)Resource Usage. |
| * gets: (libc)Line Input. |
| * getservbyname: (libc)Services Database. |
| * getservbyport: (libc)Services Database. |
| * getservent: (libc)Services Database. |
| * getsid: (libc)Process Group Functions. |
| * getsockname: (libc)Reading Address. |
| * getsockopt: (libc)Socket Option Functions. |
| * getsubopt: (libc)Suboptions. |
| * gettext: (libc)Translation with gettext. |
| * gettimeofday: (libc)High-Resolution Calendar. |
| * getuid: (libc)Reading Persona. |
| * getumask: (libc)Setting Permissions. |
| * getutent: (libc)Manipulating the Database. |
| * getutent_r: (libc)Manipulating the Database. |
| * getutid: (libc)Manipulating the Database. |
| * getutid_r: (libc)Manipulating the Database. |
| * getutline: (libc)Manipulating the Database. |
| * getutline_r: (libc)Manipulating the Database. |
| * getutmp: (libc)XPG Functions. |
| * getutmpx: (libc)XPG Functions. |
| * getutxent: (libc)XPG Functions. |
| * getutxid: (libc)XPG Functions. |
| * getutxline: (libc)XPG Functions. |
| * getw: (libc)Character Input. |
| * getwc: (libc)Character Input. |
| * getwc_unlocked: (libc)Character Input. |
| * getwchar: (libc)Character Input. |
| * getwchar_unlocked: (libc)Character Input. |
| * getwd: (libc)Working Directory. |
| * glob64: (libc)Calling Glob. |
| * glob: (libc)Calling Glob. |
| * globfree64: (libc)More Flags for Globbing. |
| * globfree: (libc)More Flags for Globbing. |
| * gmtime: (libc)Broken-down Time. |
| * gmtime_r: (libc)Broken-down Time. |
| * grantpt: (libc)Allocation. |
| * gsignal: (libc)Signaling Yourself. |
| * gtty: (libc)BSD Terminal Modes. |
| * hasmntopt: (libc)mtab. |
| * hcreate: (libc)Hash Search Function. |
| * hcreate_r: (libc)Hash Search Function. |
| * hdestroy: (libc)Hash Search Function. |
| * hdestroy_r: (libc)Hash Search Function. |
| * hsearch: (libc)Hash Search Function. |
| * hsearch_r: (libc)Hash Search Function. |
| * htonl: (libc)Byte Order. |
| * htons: (libc)Byte Order. |
| * hypot: (libc)Exponents and Logarithms. |
| * hypotf: (libc)Exponents and Logarithms. |
| * hypotl: (libc)Exponents and Logarithms. |
| * iconv: (libc)Generic Conversion Interface. |
| * iconv_close: (libc)Generic Conversion Interface. |
| * iconv_open: (libc)Generic Conversion Interface. |
| * if_freenameindex: (libc)Interface Naming. |
| * if_indextoname: (libc)Interface Naming. |
| * if_nameindex: (libc)Interface Naming. |
| * if_nametoindex: (libc)Interface Naming. |
| * ilogb: (libc)Exponents and Logarithms. |
| * ilogbf: (libc)Exponents and Logarithms. |
| * ilogbl: (libc)Exponents and Logarithms. |
| * imaxabs: (libc)Absolute Value. |
| * imaxdiv: (libc)Integer Division. |
| * in6addr_any: (libc)Host Address Data Type. |
| * in6addr_loopback: (libc)Host Address Data Type. |
| * index: (libc)Search Functions. |
| * inet_addr: (libc)Host Address Functions. |
| * inet_aton: (libc)Host Address Functions. |
| * inet_lnaof: (libc)Host Address Functions. |
| * inet_makeaddr: (libc)Host Address Functions. |
| * inet_netof: (libc)Host Address Functions. |
| * inet_network: (libc)Host Address Functions. |
| * inet_ntoa: (libc)Host Address Functions. |
| * inet_ntop: (libc)Host Address Functions. |
| * inet_pton: (libc)Host Address Functions. |
| * initgroups: (libc)Setting Groups. |
| * initstate: (libc)BSD Random. |
| * initstate_r: (libc)BSD Random. |
| * innetgr: (libc)Netgroup Membership. |
| * ioctl: (libc)IOCTLs. |
| * isalnum: (libc)Classification of Characters. |
| * isalpha: (libc)Classification of Characters. |
| * isascii: (libc)Classification of Characters. |
| * isatty: (libc)Is It a Terminal. |
| * isblank: (libc)Classification of Characters. |
| * iscntrl: (libc)Classification of Characters. |
| * isdigit: (libc)Classification of Characters. |
| * isfinite: (libc)Floating Point Classes. |
| * isgraph: (libc)Classification of Characters. |
| * isgreater: (libc)FP Comparison Functions. |
| * isgreaterequal: (libc)FP Comparison Functions. |
| * isinf: (libc)Floating Point Classes. |
| * isinff: (libc)Floating Point Classes. |
| * isinfl: (libc)Floating Point Classes. |
| * isless: (libc)FP Comparison Functions. |
| * islessequal: (libc)FP Comparison Functions. |
| * islessgreater: (libc)FP Comparison Functions. |
| * islower: (libc)Classification of Characters. |
| * isnan: (libc)Floating Point Classes. |
| * isnan: (libc)Floating Point Classes. |
| * isnanf: (libc)Floating Point Classes. |
| * isnanl: (libc)Floating Point Classes. |
| * isnormal: (libc)Floating Point Classes. |
| * isprint: (libc)Classification of Characters. |
| * ispunct: (libc)Classification of Characters. |
| * issignaling: (libc)Floating Point Classes. |
| * isspace: (libc)Classification of Characters. |
| * isunordered: (libc)FP Comparison Functions. |
| * isupper: (libc)Classification of Characters. |
| * iswalnum: (libc)Classification of Wide Characters. |
| * iswalpha: (libc)Classification of Wide Characters. |
| * iswblank: (libc)Classification of Wide Characters. |
| * iswcntrl: (libc)Classification of Wide Characters. |
| * iswctype: (libc)Classification of Wide Characters. |
| * iswdigit: (libc)Classification of Wide Characters. |
| * iswgraph: (libc)Classification of Wide Characters. |
| * iswlower: (libc)Classification of Wide Characters. |
| * iswprint: (libc)Classification of Wide Characters. |
| * iswpunct: (libc)Classification of Wide Characters. |
| * iswspace: (libc)Classification of Wide Characters. |
| * iswupper: (libc)Classification of Wide Characters. |
| * iswxdigit: (libc)Classification of Wide Characters. |
| * isxdigit: (libc)Classification of Characters. |
| * j0: (libc)Special Functions. |
| * j0f: (libc)Special Functions. |
| * j0l: (libc)Special Functions. |
| * j1: (libc)Special Functions. |
| * j1f: (libc)Special Functions. |
| * j1l: (libc)Special Functions. |
| * jn: (libc)Special Functions. |
| * jnf: (libc)Special Functions. |
| * jnl: (libc)Special Functions. |
| * jrand48: (libc)SVID Random. |
| * jrand48_r: (libc)SVID Random. |
| * kill: (libc)Signaling Another Process. |
| * killpg: (libc)Signaling Another Process. |
| * l64a: (libc)Encode Binary Data. |
| * labs: (libc)Absolute Value. |
| * lcong48: (libc)SVID Random. |
| * lcong48_r: (libc)SVID Random. |
| * ldexp: (libc)Normalization Functions. |
| * ldexpf: (libc)Normalization Functions. |
| * ldexpl: (libc)Normalization Functions. |
| * ldiv: (libc)Integer Division. |
| * lfind: (libc)Array Search Function. |
| * lgamma: (libc)Special Functions. |
| * lgamma_r: (libc)Special Functions. |
| * lgammaf: (libc)Special Functions. |
| * lgammaf_r: (libc)Special Functions. |
| * lgammal: (libc)Special Functions. |
| * lgammal_r: (libc)Special Functions. |
| * link: (libc)Hard Links. |
| * lio_listio64: (libc)Asynchronous Reads/Writes. |
| * lio_listio: (libc)Asynchronous Reads/Writes. |
| * listen: (libc)Listening. |
| * llabs: (libc)Absolute Value. |
| * lldiv: (libc)Integer Division. |
| * llrint: (libc)Rounding Functions. |
| * llrintf: (libc)Rounding Functions. |
| * llrintl: (libc)Rounding Functions. |
| * llround: (libc)Rounding Functions. |
| * llroundf: (libc)Rounding Functions. |
| * llroundl: (libc)Rounding Functions. |
| * localeconv: (libc)The Lame Way to Locale Data. |
| * localtime: (libc)Broken-down Time. |
| * localtime_r: (libc)Broken-down Time. |
| * log10: (libc)Exponents and Logarithms. |
| * log10f: (libc)Exponents and Logarithms. |
| * log10l: (libc)Exponents and Logarithms. |
| * log1p: (libc)Exponents and Logarithms. |
| * log1pf: (libc)Exponents and Logarithms. |
| * log1pl: (libc)Exponents and Logarithms. |
| * log2: (libc)Exponents and Logarithms. |
| * log2f: (libc)Exponents and Logarithms. |
| * log2l: (libc)Exponents and Logarithms. |
| * log: (libc)Exponents and Logarithms. |
| * logb: (libc)Exponents and Logarithms. |
| * logbf: (libc)Exponents and Logarithms. |
| * logbl: (libc)Exponents and Logarithms. |
| * logf: (libc)Exponents and Logarithms. |
| * login: (libc)Logging In and Out. |
| * login_tty: (libc)Logging In and Out. |
| * logl: (libc)Exponents and Logarithms. |
| * logout: (libc)Logging In and Out. |
| * logwtmp: (libc)Logging In and Out. |
| * longjmp: (libc)Non-Local Details. |
| * lrand48: (libc)SVID Random. |
| * lrand48_r: (libc)SVID Random. |
| * lrint: (libc)Rounding Functions. |
| * lrintf: (libc)Rounding Functions. |
| * lrintl: (libc)Rounding Functions. |
| * lround: (libc)Rounding Functions. |
| * lroundf: (libc)Rounding Functions. |
| * lroundl: (libc)Rounding Functions. |
| * lsearch: (libc)Array Search Function. |
| * lseek64: (libc)File Position Primitive. |
| * lseek: (libc)File Position Primitive. |
| * lstat64: (libc)Reading Attributes. |
| * lstat: (libc)Reading Attributes. |
| * lutimes: (libc)File Times. |
| * madvise: (libc)Memory-mapped I/O. |
| * makecontext: (libc)System V contexts. |
| * mallinfo: (libc)Statistics of Malloc. |
| * malloc: (libc)Basic Allocation. |
| * mallopt: (libc)Malloc Tunable Parameters. |
| * mblen: (libc)Non-reentrant Character Conversion. |
| * mbrlen: (libc)Converting a Character. |
| * mbrtowc: (libc)Converting a Character. |
| * mbsinit: (libc)Keeping the state. |
| * mbsnrtowcs: (libc)Converting Strings. |
| * mbsrtowcs: (libc)Converting Strings. |
| * mbstowcs: (libc)Non-reentrant String Conversion. |
| * mbtowc: (libc)Non-reentrant Character Conversion. |
| * mcheck: (libc)Heap Consistency Checking. |
| * memalign: (libc)Aligned Memory Blocks. |
| * memccpy: (libc)Copying and Concatenation. |
| * memchr: (libc)Search Functions. |
| * memcmp: (libc)String/Array Comparison. |
| * memcpy: (libc)Copying and Concatenation. |
| * memfrob: (libc)Trivial Encryption. |
| * memmem: (libc)Search Functions. |
| * memmove: (libc)Copying and Concatenation. |
| * mempcpy: (libc)Copying and Concatenation. |
| * memrchr: (libc)Search Functions. |
| * memset: (libc)Copying and Concatenation. |
| * mkdir: (libc)Creating Directories. |
| * mkdtemp: (libc)Temporary Files. |
| * mkfifo: (libc)FIFO Special Files. |
| * mknod: (libc)Making Special Files. |
| * mkstemp: (libc)Temporary Files. |
| * mktemp: (libc)Temporary Files. |
| * mktime: (libc)Broken-down Time. |
| * mlock: (libc)Page Lock Functions. |
| * mlockall: (libc)Page Lock Functions. |
| * mmap64: (libc)Memory-mapped I/O. |
| * mmap: (libc)Memory-mapped I/O. |
| * modf: (libc)Rounding Functions. |
| * modff: (libc)Rounding Functions. |
| * modfl: (libc)Rounding Functions. |
| * mount: (libc)Mount-Unmount-Remount. |
| * mprobe: (libc)Heap Consistency Checking. |
| * mrand48: (libc)SVID Random. |
| * mrand48_r: (libc)SVID Random. |
| * mremap: (libc)Memory-mapped I/O. |
| * msync: (libc)Memory-mapped I/O. |
| * mtrace: (libc)Tracing malloc. |
| * munlock: (libc)Page Lock Functions. |
| * munlockall: (libc)Page Lock Functions. |
| * munmap: (libc)Memory-mapped I/O. |
| * muntrace: (libc)Tracing malloc. |
| * nan: (libc)FP Bit Twiddling. |
| * nanf: (libc)FP Bit Twiddling. |
| * nanl: (libc)FP Bit Twiddling. |
| * nanosleep: (libc)Sleeping. |
| * nearbyint: (libc)Rounding Functions. |
| * nearbyintf: (libc)Rounding Functions. |
| * nearbyintl: (libc)Rounding Functions. |
| * nextafter: (libc)FP Bit Twiddling. |
| * nextafterf: (libc)FP Bit Twiddling. |
| * nextafterl: (libc)FP Bit Twiddling. |
| * nexttoward: (libc)FP Bit Twiddling. |
| * nexttowardf: (libc)FP Bit Twiddling. |
| * nexttowardl: (libc)FP Bit Twiddling. |
| * nftw64: (libc)Working with Directory Trees. |
| * nftw: (libc)Working with Directory Trees. |
| * ngettext: (libc)Advanced gettext functions. |
| * nice: (libc)Traditional Scheduling Functions. |
| * nl_langinfo: (libc)The Elegant and Fast Way. |
| * nrand48: (libc)SVID Random. |
| * nrand48_r: (libc)SVID Random. |
| * ntohl: (libc)Byte Order. |
| * ntohs: (libc)Byte Order. |
| * ntp_adjtime: (libc)High Accuracy Clock. |
| * ntp_gettime: (libc)High Accuracy Clock. |
| * obstack_1grow: (libc)Growing Objects. |
| * obstack_1grow_fast: (libc)Extra Fast Growing. |
| * obstack_alignment_mask: (libc)Obstacks Data Alignment. |
| * obstack_alloc: (libc)Allocation in an Obstack. |
| * obstack_base: (libc)Status of an Obstack. |
| * obstack_blank: (libc)Growing Objects. |
| * obstack_blank_fast: (libc)Extra Fast Growing. |
| * obstack_chunk_size: (libc)Obstack Chunks. |
| * obstack_copy0: (libc)Allocation in an Obstack. |
| * obstack_copy: (libc)Allocation in an Obstack. |
| * obstack_finish: (libc)Growing Objects. |
| * obstack_free: (libc)Freeing Obstack Objects. |
| * obstack_grow0: (libc)Growing Objects. |
| * obstack_grow: (libc)Growing Objects. |
| * obstack_init: (libc)Preparing for Obstacks. |
| * obstack_int_grow: (libc)Growing Objects. |
| * obstack_int_grow_fast: (libc)Extra Fast Growing. |
| * obstack_next_free: (libc)Status of an Obstack. |
| * obstack_object_size: (libc)Growing Objects. |
| * obstack_object_size: (libc)Status of an Obstack. |
| * obstack_printf: (libc)Dynamic Output. |
| * obstack_ptr_grow: (libc)Growing Objects. |
| * obstack_ptr_grow_fast: (libc)Extra Fast Growing. |
| * obstack_room: (libc)Extra Fast Growing. |
| * obstack_vprintf: (libc)Variable Arguments Output. |
| * offsetof: (libc)Structure Measurement. |
| * on_exit: (libc)Cleanups on Exit. |
| * open64: (libc)Opening and Closing Files. |
| * open: (libc)Opening and Closing Files. |
| * open_memstream: (libc)String Streams. |
| * opendir: (libc)Opening a Directory. |
| * openlog: (libc)openlog. |
| * openpty: (libc)Pseudo-Terminal Pairs. |
| * parse_printf_format: (libc)Parsing a Template String. |
| * pathconf: (libc)Pathconf. |
| * pause: (libc)Using Pause. |
| * pclose: (libc)Pipe to a Subprocess. |
| * perror: (libc)Error Messages. |
| * pipe: (libc)Creating a Pipe. |
| * popen: (libc)Pipe to a Subprocess. |
| * posix_memalign: (libc)Aligned Memory Blocks. |
| * pow10: (libc)Exponents and Logarithms. |
| * pow10f: (libc)Exponents and Logarithms. |
| * pow10l: (libc)Exponents and Logarithms. |
| * pow: (libc)Exponents and Logarithms. |
| * powf: (libc)Exponents and Logarithms. |
| * powl: (libc)Exponents and Logarithms. |
| * pread64: (libc)I/O Primitives. |
| * pread: (libc)I/O Primitives. |
| * printf: (libc)Formatted Output Functions. |
| * printf_size: (libc)Predefined Printf Handlers. |
| * printf_size_info: (libc)Predefined Printf Handlers. |
| * psignal: (libc)Signal Messages. |
| * pthread_getattr_default_np: (libc)Default Thread Attributes. |
| * pthread_getspecific: (libc)Thread-specific Data. |
| * pthread_key_create: (libc)Thread-specific Data. |
| * pthread_key_delete: (libc)Thread-specific Data. |
| * pthread_setattr_default_np: (libc)Default Thread Attributes. |
| * pthread_setspecific: (libc)Thread-specific Data. |
| * ptsname: (libc)Allocation. |
| * ptsname_r: (libc)Allocation. |
| * putc: (libc)Simple Output. |
| * putc_unlocked: (libc)Simple Output. |
| * putchar: (libc)Simple Output. |
| * putchar_unlocked: (libc)Simple Output. |
| * putenv: (libc)Environment Access. |
| * putpwent: (libc)Writing a User Entry. |
| * puts: (libc)Simple Output. |
| * pututline: (libc)Manipulating the Database. |
| * pututxline: (libc)XPG Functions. |
| * putw: (libc)Simple Output. |
| * putwc: (libc)Simple Output. |
| * putwc_unlocked: (libc)Simple Output. |
| * putwchar: (libc)Simple Output. |
| * putwchar_unlocked: (libc)Simple Output. |
| * pwrite64: (libc)I/O Primitives. |
| * pwrite: (libc)I/O Primitives. |
| * qecvt: (libc)System V Number Conversion. |
| * qecvt_r: (libc)System V Number Conversion. |
| * qfcvt: (libc)System V Number Conversion. |
| * qfcvt_r: (libc)System V Number Conversion. |
| * qgcvt: (libc)System V Number Conversion. |
| * qsort: (libc)Array Sort Function. |
| * raise: (libc)Signaling Yourself. |
| * rand: (libc)ISO Random. |
| * rand_r: (libc)ISO Random. |
| * random: (libc)BSD Random. |
| * random_r: (libc)BSD Random. |
| * rawmemchr: (libc)Search Functions. |
| * read: (libc)I/O Primitives. |
| * readdir64: (libc)Reading/Closing Directory. |
| * readdir64_r: (libc)Reading/Closing Directory. |
| * readdir: (libc)Reading/Closing Directory. |
| * readdir_r: (libc)Reading/Closing Directory. |
| * readlink: (libc)Symbolic Links. |
| * readv: (libc)Scatter-Gather. |
| * realloc: (libc)Changing Block Size. |
| * realpath: (libc)Symbolic Links. |
| * recv: (libc)Receiving Data. |
| * recvfrom: (libc)Receiving Datagrams. |
| * recvmsg: (libc)Receiving Datagrams. |
| * regcomp: (libc)POSIX Regexp Compilation. |
| * regerror: (libc)Regexp Cleanup. |
| * regexec: (libc)Matching POSIX Regexps. |
| * regfree: (libc)Regexp Cleanup. |
| * register_printf_function: (libc)Registering New Conversions. |
| * remainder: (libc)Remainder Functions. |
| * remainderf: (libc)Remainder Functions. |
| * remainderl: (libc)Remainder Functions. |
| * remove: (libc)Deleting Files. |
| * rename: (libc)Renaming Files. |
| * rewind: (libc)File Positioning. |
| * rewinddir: (libc)Random Access Directory. |
| * rindex: (libc)Search Functions. |
| * rint: (libc)Rounding Functions. |
| * rintf: (libc)Rounding Functions. |
| * rintl: (libc)Rounding Functions. |
| * rmdir: (libc)Deleting Files. |
| * round: (libc)Rounding Functions. |
| * roundf: (libc)Rounding Functions. |
| * roundl: (libc)Rounding Functions. |
| * rpmatch: (libc)Yes-or-No Questions. |
| * sbrk: (libc)Resizing the Data Segment. |
| * scalb: (libc)Normalization Functions. |
| * scalbf: (libc)Normalization Functions. |
| * scalbl: (libc)Normalization Functions. |
| * scalbln: (libc)Normalization Functions. |
| * scalblnf: (libc)Normalization Functions. |
| * scalblnl: (libc)Normalization Functions. |
| * scalbn: (libc)Normalization Functions. |
| * scalbnf: (libc)Normalization Functions. |
| * scalbnl: (libc)Normalization Functions. |
| * scandir64: (libc)Scanning Directory Content. |
| * scandir: (libc)Scanning Directory Content. |
| * scanf: (libc)Formatted Input Functions. |
| * sched_get_priority_max: (libc)Basic Scheduling Functions. |
| * sched_get_priority_min: (libc)Basic Scheduling Functions. |
| * sched_getaffinity: (libc)CPU Affinity. |
| * sched_getparam: (libc)Basic Scheduling Functions. |
| * sched_getscheduler: (libc)Basic Scheduling Functions. |
| * sched_rr_get_interval: (libc)Basic Scheduling Functions. |
| * sched_setaffinity: (libc)CPU Affinity. |
| * sched_setparam: (libc)Basic Scheduling Functions. |
| * sched_setscheduler: (libc)Basic Scheduling Functions. |
| * sched_yield: (libc)Basic Scheduling Functions. |
| * secure_getenv: (libc)Environment Access. |
| * seed48: (libc)SVID Random. |
| * seed48_r: (libc)SVID Random. |
| * seekdir: (libc)Random Access Directory. |
| * select: (libc)Waiting for I/O. |
| * send: (libc)Sending Data. |
| * sendmsg: (libc)Receiving Datagrams. |
| * sendto: (libc)Sending Datagrams. |
| * setbuf: (libc)Controlling Buffering. |
| * setbuffer: (libc)Controlling Buffering. |
| * setcontext: (libc)System V contexts. |
| * setdomainname: (libc)Host Identification. |
| * setegid: (libc)Setting Groups. |
| * setenv: (libc)Environment Access. |
| * seteuid: (libc)Setting User ID. |
| * setfsent: (libc)fstab. |
| * setgid: (libc)Setting Groups. |
| * setgrent: (libc)Scanning All Groups. |
| * setgroups: (libc)Setting Groups. |
| * sethostent: (libc)Host Names. |
| * sethostid: (libc)Host Identification. |
| * sethostname: (libc)Host Identification. |
| * setitimer: (libc)Setting an Alarm. |
| * setjmp: (libc)Non-Local Details. |
| * setkey: (libc)DES Encryption. |
| * setkey_r: (libc)DES Encryption. |
| * setlinebuf: (libc)Controlling Buffering. |
| * setlocale: (libc)Setting the Locale. |
| * setlogmask: (libc)setlogmask. |
| * setmntent: (libc)mtab. |
| * setnetent: (libc)Networks Database. |
| * setnetgrent: (libc)Lookup Netgroup. |
| * setpgid: (libc)Process Group Functions. |
| * setpgrp: (libc)Process Group Functions. |
| * setpriority: (libc)Traditional Scheduling Functions. |
| * setprotoent: (libc)Protocols Database. |
| * setpwent: (libc)Scanning All Users. |
| * setregid: (libc)Setting Groups. |
| * setreuid: (libc)Setting User ID. |
| * setrlimit64: (libc)Limits on Resources. |
| * setrlimit: (libc)Limits on Resources. |
| * setservent: (libc)Services Database. |
| * setsid: (libc)Process Group Functions. |
| * setsockopt: (libc)Socket Option Functions. |
| * setstate: (libc)BSD Random. |
| * setstate_r: (libc)BSD Random. |
| * settimeofday: (libc)High-Resolution Calendar. |
| * setuid: (libc)Setting User ID. |
| * setutent: (libc)Manipulating the Database. |
| * setutxent: (libc)XPG Functions. |
| * setvbuf: (libc)Controlling Buffering. |
| * shm_open: (libc)Memory-mapped I/O. |
| * shm_unlink: (libc)Memory-mapped I/O. |
| * shutdown: (libc)Closing a Socket. |
| * sigaction: (libc)Advanced Signal Handling. |
| * sigaddset: (libc)Signal Sets. |
| * sigaltstack: (libc)Signal Stack. |
| * sigblock: (libc)Blocking in BSD. |
| * sigdelset: (libc)Signal Sets. |
| * sigemptyset: (libc)Signal Sets. |
| * sigfillset: (libc)Signal Sets. |
| * siginterrupt: (libc)BSD Handler. |
| * sigismember: (libc)Signal Sets. |
| * siglongjmp: (libc)Non-Local Exits and Signals. |
| * sigmask: (libc)Blocking in BSD. |
| * signal: (libc)Basic Signal Handling. |
| * signbit: (libc)FP Bit Twiddling. |
| * significand: (libc)Normalization Functions. |
| * significandf: (libc)Normalization Functions. |
| * significandl: (libc)Normalization Functions. |
| * sigpause: (libc)Blocking in BSD. |
| * sigpending: (libc)Checking for Pending Signals. |
| * sigprocmask: (libc)Process Signal Mask. |
| * sigsetjmp: (libc)Non-Local Exits and Signals. |
| * sigsetmask: (libc)Blocking in BSD. |
| * sigstack: (libc)Signal Stack. |
| * sigsuspend: (libc)Sigsuspend. |
| * sigvec: (libc)BSD Handler. |
| * sin: (libc)Trig Functions. |
| * sincos: (libc)Trig Functions. |
| * sincosf: (libc)Trig Functions. |
| * sincosl: (libc)Trig Functions. |
| * sinf: (libc)Trig Functions. |
| * sinh: (libc)Hyperbolic Functions. |
| * sinhf: (libc)Hyperbolic Functions. |
| * sinhl: (libc)Hyperbolic Functions. |
| * sinl: (libc)Trig Functions. |
| * sleep: (libc)Sleeping. |
| * snprintf: (libc)Formatted Output Functions. |
| * socket: (libc)Creating a Socket. |
| * socketpair: (libc)Socket Pairs. |
| * sprintf: (libc)Formatted Output Functions. |
| * sqrt: (libc)Exponents and Logarithms. |
| * sqrtf: (libc)Exponents and Logarithms. |
| * sqrtl: (libc)Exponents and Logarithms. |
| * srand48: (libc)SVID Random. |
| * srand48_r: (libc)SVID Random. |
| * srand: (libc)ISO Random. |
| * srandom: (libc)BSD Random. |
| * srandom_r: (libc)BSD Random. |
| * sscanf: (libc)Formatted Input Functions. |
| * ssignal: (libc)Basic Signal Handling. |
| * stat64: (libc)Reading Attributes. |
| * stat: (libc)Reading Attributes. |
| * stime: (libc)Simple Calendar Time. |
| * stpcpy: (libc)Copying and Concatenation. |
| * stpncpy: (libc)Copying and Concatenation. |
| * strcasecmp: (libc)String/Array Comparison. |
| * strcasestr: (libc)Search Functions. |
| * strcat: (libc)Copying and Concatenation. |
| * strchr: (libc)Search Functions. |
| * strchrnul: (libc)Search Functions. |
| * strcmp: (libc)String/Array Comparison. |
| * strcoll: (libc)Collation Functions. |
| * strcpy: (libc)Copying and Concatenation. |
| * strcspn: (libc)Search Functions. |
| * strdup: (libc)Copying and Concatenation. |
| * strdupa: (libc)Copying and Concatenation. |
| * strerror: (libc)Error Messages. |
| * strerror_r: (libc)Error Messages. |
| * strfmon: (libc)Formatting Numbers. |
| * strfry: (libc)strfry. |
| * strftime: (libc)Formatting Calendar Time. |
| * strlen: (libc)String Length. |
| * strncasecmp: (libc)String/Array Comparison. |
| * strncat: (libc)Copying and Concatenation. |
| * strncmp: (libc)String/Array Comparison. |
| * strncpy: (libc)Copying and Concatenation. |
| * strndup: (libc)Copying and Concatenation. |
| * strndupa: (libc)Copying and Concatenation. |
| * strnlen: (libc)String Length. |
| * strpbrk: (libc)Search Functions. |
| * strptime: (libc)Low-Level Time String Parsing. |
| * strrchr: (libc)Search Functions. |
| * strsep: (libc)Finding Tokens in a String. |
| * strsignal: (libc)Signal Messages. |
| * strspn: (libc)Search Functions. |
| * strstr: (libc)Search Functions. |
| * strtod: (libc)Parsing of Floats. |
| * strtof: (libc)Parsing of Floats. |
| * strtoimax: (libc)Parsing of Integers. |
| * strtok: (libc)Finding Tokens in a String. |
| * strtok_r: (libc)Finding Tokens in a String. |
| * strtol: (libc)Parsing of Integers. |
| * strtold: (libc)Parsing of Floats. |
| * strtoll: (libc)Parsing of Integers. |
| * strtoq: (libc)Parsing of Integers. |
| * strtoul: (libc)Parsing of Integers. |
| * strtoull: (libc)Parsing of Integers. |
| * strtoumax: (libc)Parsing of Integers. |
| * strtouq: (libc)Parsing of Integers. |
| * strverscmp: (libc)String/Array Comparison. |
| * strxfrm: (libc)Collation Functions. |
| * stty: (libc)BSD Terminal Modes. |
| * swapcontext: (libc)System V contexts. |
| * swprintf: (libc)Formatted Output Functions. |
| * swscanf: (libc)Formatted Input Functions. |
| * symlink: (libc)Symbolic Links. |
| * sync: (libc)Synchronizing I/O. |
| * syscall: (libc)System Calls. |
| * sysconf: (libc)Sysconf Definition. |
| * sysctl: (libc)System Parameters. |
| * syslog: (libc)syslog; vsyslog. |
| * system: (libc)Running a Command. |
| * sysv_signal: (libc)Basic Signal Handling. |
| * tan: (libc)Trig Functions. |
| * tanf: (libc)Trig Functions. |
| * tanh: (libc)Hyperbolic Functions. |
| * tanhf: (libc)Hyperbolic Functions. |
| * tanhl: (libc)Hyperbolic Functions. |
| * tanl: (libc)Trig Functions. |
| * tcdrain: (libc)Line Control. |
| * tcflow: (libc)Line Control. |
| * tcflush: (libc)Line Control. |
| * tcgetattr: (libc)Mode Functions. |
| * tcgetpgrp: (libc)Terminal Access Functions. |
| * tcgetsid: (libc)Terminal Access Functions. |
| * tcsendbreak: (libc)Line Control. |
| * tcsetattr: (libc)Mode Functions. |
| * tcsetpgrp: (libc)Terminal Access Functions. |
| * tdelete: (libc)Tree Search Function. |
| * tdestroy: (libc)Tree Search Function. |
| * telldir: (libc)Random Access Directory. |
| * tempnam: (libc)Temporary Files. |
| * textdomain: (libc)Locating gettext catalog. |
| * tfind: (libc)Tree Search Function. |
| * tgamma: (libc)Special Functions. |
| * tgammaf: (libc)Special Functions. |
| * tgammal: (libc)Special Functions. |
| * time: (libc)Simple Calendar Time. |
| * timegm: (libc)Broken-down Time. |
| * timelocal: (libc)Broken-down Time. |
| * times: (libc)Processor Time. |
| * tmpfile64: (libc)Temporary Files. |
| * tmpfile: (libc)Temporary Files. |
| * tmpnam: (libc)Temporary Files. |
| * tmpnam_r: (libc)Temporary Files. |
| * toascii: (libc)Case Conversion. |
| * tolower: (libc)Case Conversion. |
| * toupper: (libc)Case Conversion. |
| * towctrans: (libc)Wide Character Case Conversion. |
| * towlower: (libc)Wide Character Case Conversion. |
| * towupper: (libc)Wide Character Case Conversion. |
| * trunc: (libc)Rounding Functions. |
| * truncate64: (libc)File Size. |
| * truncate: (libc)File Size. |
| * truncf: (libc)Rounding Functions. |
| * truncl: (libc)Rounding Functions. |
| * tsearch: (libc)Tree Search Function. |
| * ttyname: (libc)Is It a Terminal. |
| * ttyname_r: (libc)Is It a Terminal. |
| * twalk: (libc)Tree Search Function. |
| * tzset: (libc)Time Zone Functions. |
| * ulimit: (libc)Limits on Resources. |
| * umask: (libc)Setting Permissions. |
| * umount2: (libc)Mount-Unmount-Remount. |
| * umount: (libc)Mount-Unmount-Remount. |
| * uname: (libc)Platform Type. |
| * ungetc: (libc)How Unread. |
| * ungetwc: (libc)How Unread. |
| * unlink: (libc)Deleting Files. |
| * unlockpt: (libc)Allocation. |
| * unsetenv: (libc)Environment Access. |
| * updwtmp: (libc)Manipulating the Database. |
| * utime: (libc)File Times. |
| * utimes: (libc)File Times. |
| * utmpname: (libc)Manipulating the Database. |
| * utmpxname: (libc)XPG Functions. |
| * va_arg: (libc)Argument Macros. |
| * va_copy: (libc)Argument Macros. |
| * va_end: (libc)Argument Macros. |
| * va_start: (libc)Argument Macros. |
| * valloc: (libc)Aligned Memory Blocks. |
| * vasprintf: (libc)Variable Arguments Output. |
| * verr: (libc)Error Messages. |
| * verrx: (libc)Error Messages. |
| * versionsort64: (libc)Scanning Directory Content. |
| * versionsort: (libc)Scanning Directory Content. |
| * vfork: (libc)Creating a Process. |
| * vfprintf: (libc)Variable Arguments Output. |
| * vfscanf: (libc)Variable Arguments Input. |
| * vfwprintf: (libc)Variable Arguments Output. |
| * vfwscanf: (libc)Variable Arguments Input. |
| * vlimit: (libc)Limits on Resources. |
| * vprintf: (libc)Variable Arguments Output. |
| * vscanf: (libc)Variable Arguments Input. |
| * vsnprintf: (libc)Variable Arguments Output. |
| * vsprintf: (libc)Variable Arguments Output. |
| * vsscanf: (libc)Variable Arguments Input. |
| * vswprintf: (libc)Variable Arguments Output. |
| * vswscanf: (libc)Variable Arguments Input. |
| * vsyslog: (libc)syslog; vsyslog. |
| * vtimes: (libc)Resource Usage. |
| * vwarn: (libc)Error Messages. |
| * vwarnx: (libc)Error Messages. |
| * vwprintf: (libc)Variable Arguments Output. |
| * vwscanf: (libc)Variable Arguments Input. |
| * wait3: (libc)BSD Wait Functions. |
| * wait4: (libc)Process Completion. |
| * wait: (libc)Process Completion. |
| * waitpid: (libc)Process Completion. |
| * warn: (libc)Error Messages. |
| * warnx: (libc)Error Messages. |
| * wcpcpy: (libc)Copying and Concatenation. |
| * wcpncpy: (libc)Copying and Concatenation. |
| * wcrtomb: (libc)Converting a Character. |
| * wcscasecmp: (libc)String/Array Comparison. |
| * wcscat: (libc)Copying and Concatenation. |
| * wcschr: (libc)Search Functions. |
| * wcschrnul: (libc)Search Functions. |
| * wcscmp: (libc)String/Array Comparison. |
| * wcscoll: (libc)Collation Functions. |
| * wcscpy: (libc)Copying and Concatenation. |
| * wcscspn: (libc)Search Functions. |
| * wcsdup: (libc)Copying and Concatenation. |
| * wcsftime: (libc)Formatting Calendar Time. |
| * wcslen: (libc)String Length. |
| * wcsncasecmp: (libc)String/Array Comparison. |
| * wcsncat: (libc)Copying and Concatenation. |
| * wcsncmp: (libc)String/Array Comparison. |
| * wcsncpy: (libc)Copying and Concatenation. |
| * wcsnlen: (libc)String Length. |
| * wcsnrtombs: (libc)Converting Strings. |
| * wcspbrk: (libc)Search Functions. |
| * wcsrchr: (libc)Search Functions. |
| * wcsrtombs: (libc)Converting Strings. |
| * wcsspn: (libc)Search Functions. |
| * wcsstr: (libc)Search Functions. |
| * wcstod: (libc)Parsing of Floats. |
| * wcstof: (libc)Parsing of Floats. |
| * wcstoimax: (libc)Parsing of Integers. |
| * wcstok: (libc)Finding Tokens in a String. |
| * wcstol: (libc)Parsing of Integers. |
| * wcstold: (libc)Parsing of Floats. |
| * wcstoll: (libc)Parsing of Integers. |
| * wcstombs: (libc)Non-reentrant String Conversion. |
| * wcstoq: (libc)Parsing of Integers. |
| * wcstoul: (libc)Parsing of Integers. |
| * wcstoull: (libc)Parsing of Integers. |
| * wcstoumax: (libc)Parsing of Integers. |
| * wcstouq: (libc)Parsing of Integers. |
| * wcswcs: (libc)Search Functions. |
| * wcsxfrm: (libc)Collation Functions. |
| * wctob: (libc)Converting a Character. |
| * wctomb: (libc)Non-reentrant Character Conversion. |
| * wctrans: (libc)Wide Character Case Conversion. |
| * wctype: (libc)Classification of Wide Characters. |
| * wmemchr: (libc)Search Functions. |
| * wmemcmp: (libc)String/Array Comparison. |
| * wmemcpy: (libc)Copying and Concatenation. |
| * wmemmove: (libc)Copying and Concatenation. |
| * wmempcpy: (libc)Copying and Concatenation. |
| * wmemset: (libc)Copying and Concatenation. |
| * wordexp: (libc)Calling Wordexp. |
| * wordfree: (libc)Calling Wordexp. |
| * wprintf: (libc)Formatted Output Functions. |
| * write: (libc)I/O Primitives. |
| * writev: (libc)Scatter-Gather. |
| * wscanf: (libc)Formatted Input Functions. |
| * y0: (libc)Special Functions. |
| * y0f: (libc)Special Functions. |
| * y0l: (libc)Special Functions. |
| * y1: (libc)Special Functions. |
| * y1f: (libc)Special Functions. |
| * y1l: (libc)Special Functions. |
| * yn: (libc)Special Functions. |
| * ynf: (libc)Special Functions. |
| * ynl: (libc)Special Functions. |
| END-INFO-DIR-ENTRY |
| |
| |
| File: libc.info, Node: Canonical or Not, Next: Terminal Modes, Prev: I/O Queues, Up: Low-Level Terminal Interface |
| |
| 17.3 Two Styles of Input: Canonical or Not |
| ========================================== |
| |
| POSIX systems support two basic modes of input: canonical and |
| noncanonical. |
| |
| In "canonical input processing" mode, terminal input is processed in |
| lines terminated by newline (''\n''), EOF, or EOL characters. No input |
| can be read until an entire line has been typed by the user, and the |
| 'read' function (*note I/O Primitives::) returns at most a single line |
| of input, no matter how many bytes are requested. |
| |
| In canonical input mode, the operating system provides input editing |
| facilities: some characters are interpreted specially to perform editing |
| operations within the current line of text, such as ERASE and KILL. |
| *Note Editing Characters::. |
| |
| The constants '_POSIX_MAX_CANON' and 'MAX_CANON' parameterize the |
| maximum number of bytes which may appear in a single line of canonical |
| input. *Note Limits for Files::. You are guaranteed a maximum line |
| length of at least 'MAX_CANON' bytes, but the maximum might be larger, |
| and might even dynamically change size. |
| |
| In "noncanonical input processing" mode, characters are not grouped |
| into lines, and ERASE and KILL processing is not performed. The |
| granularity with which bytes are read in noncanonical input mode is |
| controlled by the MIN and TIME settings. *Note Noncanonical Input::. |
| |
| Most programs use canonical input mode, because this gives the user a |
| way to edit input line by line. The usual reason to use noncanonical |
| mode is when the program accepts single-character commands or provides |
| its own editing facilities. |
| |
| The choice of canonical or noncanonical input is controlled by the |
| 'ICANON' flag in the 'c_lflag' member of 'struct termios'. *Note Local |
| Modes::. |
| |
| |
| File: libc.info, Node: Terminal Modes, Next: BSD Terminal Modes, Prev: Canonical or Not, Up: Low-Level Terminal Interface |
| |
| 17.4 Terminal Modes |
| =================== |
| |
| This section describes the various terminal attributes that control how |
| input and output are done. The functions, data structures, and symbolic |
| constants are all declared in the header file 'termios.h'. |
| |
| Don't confuse terminal attributes with file attributes. A device |
| special file which is associated with a terminal has file attributes as |
| described in *note File Attributes::. These are unrelated to the |
| attributes of the terminal device itself, which are discussed in this |
| section. |
| |
| * Menu: |
| |
| * Mode Data Types:: The data type 'struct termios' and |
| related types. |
| * Mode Functions:: Functions to read and set the terminal |
| attributes. |
| * Setting Modes:: The right way to set terminal attributes |
| reliably. |
| * Input Modes:: Flags controlling low-level input handling. |
| * Output Modes:: Flags controlling low-level output handling. |
| * Control Modes:: Flags controlling serial port behavior. |
| * Local Modes:: Flags controlling high-level input handling. |
| * Line Speed:: How to read and set the terminal line speed. |
| * Special Characters:: Characters that have special effects, |
| and how to change them. |
| * Noncanonical Input:: Controlling how long to wait for input. |
| |
| |
| File: libc.info, Node: Mode Data Types, Next: Mode Functions, Up: Terminal Modes |
| |
| 17.4.1 Terminal Mode Data Types |
| ------------------------------- |
| |
| The entire collection of attributes of a terminal is stored in a |
| structure of type 'struct termios'. This structure is used with the |
| functions 'tcgetattr' and 'tcsetattr' to read and set the attributes. |
| |
| -- Data Type: struct termios |
| Structure that records all the I/O attributes of a terminal. The |
| structure includes at least the following members: |
| |
| 'tcflag_t c_iflag' |
| A bit mask specifying flags for input modes; see *note Input |
| Modes::. |
| |
| 'tcflag_t c_oflag' |
| A bit mask specifying flags for output modes; see *note Output |
| Modes::. |
| |
| 'tcflag_t c_cflag' |
| A bit mask specifying flags for control modes; see *note |
| Control Modes::. |
| |
| 'tcflag_t c_lflag' |
| A bit mask specifying flags for local modes; see *note Local |
| Modes::. |
| |
| 'cc_t c_cc[NCCS]' |
| An array specifying which characters are associated with |
| various control functions; see *note Special Characters::. |
| |
| The 'struct termios' structure also contains members which encode |
| input and output transmission speeds, but the representation is not |
| specified. *Note Line Speed::, for how to examine and store the |
| speed values. |
| |
| The following sections describe the details of the members of the |
| 'struct termios' structure. |
| |
| -- Data Type: tcflag_t |
| This is an unsigned integer type used to represent the various bit |
| masks for terminal flags. |
| |
| -- Data Type: cc_t |
| This is an unsigned integer type used to represent characters |
| associated with various terminal control functions. |
| |
| -- Macro: int NCCS |
| The value of this macro is the number of elements in the 'c_cc' |
| array. |
| |
| |
| File: libc.info, Node: Mode Functions, Next: Setting Modes, Prev: Mode Data Types, Up: Terminal Modes |
| |
| 17.4.2 Terminal Mode Functions |
| ------------------------------ |
| |
| -- Function: int tcgetattr (int FILEDES, struct termios *TERMIOS-P) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function is used to examine the attributes of the terminal |
| device with file descriptor FILEDES. The attributes are returned |
| in the structure that TERMIOS-P points to. |
| |
| If successful, 'tcgetattr' returns 0. A return value of -1 |
| indicates an error. The following 'errno' error conditions are |
| defined for this function: |
| |
| 'EBADF' |
| The FILEDES argument is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal. |
| |
| -- Function: int tcsetattr (int FILEDES, int WHEN, const struct termios |
| *TERMIOS-P) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function sets the attributes of the terminal device with file |
| descriptor FILEDES. The new attributes are taken from the |
| structure that TERMIOS-P points to. |
| |
| The WHEN argument specifies how to deal with input and output |
| already queued. It can be one of the following values: |
| |
| 'TCSANOW' |
| Make the change immediately. |
| |
| 'TCSADRAIN' |
| Make the change after waiting until all queued output has been |
| written. You should usually use this option when changing |
| parameters that affect output. |
| |
| 'TCSAFLUSH' |
| This is like 'TCSADRAIN', but also discards any queued input. |
| |
| 'TCSASOFT' |
| This is a flag bit that you can add to any of the above |
| alternatives. Its meaning is to inhibit alteration of the |
| state of the terminal hardware. It is a BSD extension; it is |
| only supported on BSD systems and GNU/Hurd systems. |
| |
| Using 'TCSASOFT' is exactly the same as setting the 'CIGNORE' |
| bit in the 'c_cflag' member of the structure TERMIOS-P points |
| to. *Note Control Modes::, for a description of 'CIGNORE'. |
| |
| If this function is called from a background process on its |
| controlling terminal, normally all processes in the process group |
| are sent a 'SIGTTOU' signal, in the same way as if the process were |
| trying to write to the terminal. The exception is if the calling |
| process itself is ignoring or blocking 'SIGTTOU' signals, in which |
| case the operation is performed and no signal is sent. *Note Job |
| Control::. |
| |
| If successful, 'tcsetattr' returns 0. A return value of -1 |
| indicates an error. The following 'errno' error conditions are |
| defined for this function: |
| |
| 'EBADF' |
| The FILEDES argument is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal. |
| |
| 'EINVAL' |
| Either the value of the 'when' argument is not valid, or there |
| is something wrong with the data in the TERMIOS-P argument. |
| |
| Although 'tcgetattr' and 'tcsetattr' specify the terminal device with |
| a file descriptor, the attributes are those of the terminal device |
| itself and not of the file descriptor. This means that the effects of |
| changing terminal attributes are persistent; if another process opens |
| the terminal file later on, it will see the changed attributes even |
| though it doesn't have anything to do with the open file descriptor you |
| originally specified in changing the attributes. |
| |
| Similarly, if a single process has multiple or duplicated file |
| descriptors for the same terminal device, changing the terminal |
| attributes affects input and output to all of these file descriptors. |
| This means, for example, that you can't open one file descriptor or |
| stream to read from a terminal in the normal line-buffered, echoed mode; |
| and simultaneously have another file descriptor for the same terminal |
| that you use to read from it in single-character, non-echoed mode. |
| Instead, you have to explicitly switch the terminal back and forth |
| between the two modes. |
| |
| |
| File: libc.info, Node: Setting Modes, Next: Input Modes, Prev: Mode Functions, Up: Terminal Modes |
| |
| 17.4.3 Setting Terminal Modes Properly |
| -------------------------------------- |
| |
| When you set terminal modes, you should call 'tcgetattr' first to get |
| the current modes of the particular terminal device, modify only those |
| modes that you are really interested in, and store the result with |
| 'tcsetattr'. |
| |
| It's a bad idea to simply initialize a 'struct termios' structure to |
| a chosen set of attributes and pass it directly to 'tcsetattr'. Your |
| program may be run years from now, on systems that support members not |
| documented in this manual. The way to avoid setting these members to |
| unreasonable values is to avoid changing them. |
| |
| What's more, different terminal devices may require different mode |
| settings in order to function properly. So you should avoid blindly |
| copying attributes from one terminal device to another. |
| |
| When a member contains a collection of independent flags, as the |
| 'c_iflag', 'c_oflag' and 'c_cflag' members do, even setting the entire |
| member is a bad idea, because particular operating systems have their |
| own flags. Instead, you should start with the current value of the |
| member and alter only the flags whose values matter in your program, |
| leaving any other flags unchanged. |
| |
| Here is an example of how to set one flag ('ISTRIP') in the 'struct |
| termios' structure while properly preserving all the other data in the |
| structure: |
| |
| int |
| set_istrip (int desc, int value) |
| { |
| struct termios settings; |
| int result; |
| |
| result = tcgetattr (desc, &settings); |
| if (result < 0) |
| { |
| perror ("error in tcgetattr"); |
| return 0; |
| } |
| settings.c_iflag &= ~ISTRIP; |
| if (value) |
| settings.c_iflag |= ISTRIP; |
| result = tcsetattr (desc, TCSANOW, &settings); |
| if (result < 0) |
| { |
| perror ("error in tcsetattr"); |
| return 0; |
| } |
| return 1; |
| } |
| |
| |
| File: libc.info, Node: Input Modes, Next: Output Modes, Prev: Setting Modes, Up: Terminal Modes |
| |
| 17.4.4 Input Modes |
| ------------------ |
| |
| This section describes the terminal attribute flags that control fairly |
| low-level aspects of input processing: handling of parity errors, break |
| signals, flow control, and <RET> and <LFD> characters. |
| |
| All of these flags are bits in the 'c_iflag' member of the 'struct |
| termios' structure. The member is an integer, and you change flags |
| using the operators '&', '|' and '^'. Don't try to specify the entire |
| value for 'c_iflag'--instead, change only specific flags and leave the |
| rest untouched (*note Setting Modes::). |
| |
| -- Macro: tcflag_t INPCK |
| If this bit is set, input parity checking is enabled. If it is not |
| set, no checking at all is done for parity errors on input; the |
| characters are simply passed through to the application. |
| |
| Parity checking on input processing is independent of whether |
| parity detection and generation on the underlying terminal hardware |
| is enabled; see *note Control Modes::. For example, you could |
| clear the 'INPCK' input mode flag and set the 'PARENB' control mode |
| flag to ignore parity errors on input, but still generate parity on |
| output. |
| |
| If this bit is set, what happens when a parity error is detected |
| depends on whether the 'IGNPAR' or 'PARMRK' bits are set. If |
| neither of these bits are set, a byte with a parity error is passed |
| to the application as a ''\0'' character. |
| |
| -- Macro: tcflag_t IGNPAR |
| If this bit is set, any byte with a framing or parity error is |
| ignored. This is only useful if 'INPCK' is also set. |
| |
| -- Macro: tcflag_t PARMRK |
| If this bit is set, input bytes with parity or framing errors are |
| marked when passed to the program. This bit is meaningful only |
| when 'INPCK' is set and 'IGNPAR' is not set. |
| |
| The way erroneous bytes are marked is with two preceding bytes, |
| '377' and '0'. Thus, the program actually reads three bytes for |
| one erroneous byte received from the terminal. |
| |
| If a valid byte has the value '0377', and 'ISTRIP' (see below) is |
| not set, the program might confuse it with the prefix that marks a |
| parity error. So a valid byte '0377' is passed to the program as |
| two bytes, '0377' '0377', in this case. |
| |
| -- Macro: tcflag_t ISTRIP |
| If this bit is set, valid input bytes are stripped to seven bits; |
| otherwise, all eight bits are available for programs to read. |
| |
| -- Macro: tcflag_t IGNBRK |
| If this bit is set, break conditions are ignored. |
| |
| A "break condition" is defined in the context of asynchronous |
| serial data transmission as a series of zero-value bits longer than |
| a single byte. |
| |
| -- Macro: tcflag_t BRKINT |
| If this bit is set and 'IGNBRK' is not set, a break condition |
| clears the terminal input and output queues and raises a 'SIGINT' |
| signal for the foreground process group associated with the |
| terminal. |
| |
| If neither 'BRKINT' nor 'IGNBRK' are set, a break condition is |
| passed to the application as a single ''\0'' character if 'PARMRK' |
| is not set, or otherwise as a three-character sequence ''\377'', |
| ''\0'', ''\0''. |
| |
| -- Macro: tcflag_t IGNCR |
| If this bit is set, carriage return characters (''\r'') are |
| discarded on input. Discarding carriage return may be useful on |
| terminals that send both carriage return and linefeed when you type |
| the <RET> key. |
| |
| -- Macro: tcflag_t ICRNL |
| If this bit is set and 'IGNCR' is not set, carriage return |
| characters (''\r'') received as input are passed to the application |
| as newline characters (''\n''). |
| |
| -- Macro: tcflag_t INLCR |
| If this bit is set, newline characters (''\n'') received as input |
| are passed to the application as carriage return characters |
| (''\r''). |
| |
| -- Macro: tcflag_t IXOFF |
| If this bit is set, start/stop control on input is enabled. In |
| other words, the computer sends STOP and START characters as |
| necessary to prevent input from coming in faster than programs are |
| reading it. The idea is that the actual terminal hardware that is |
| generating the input data responds to a STOP character by |
| suspending transmission, and to a START character by resuming |
| transmission. *Note Start/Stop Characters::. |
| |
| -- Macro: tcflag_t IXON |
| If this bit is set, start/stop control on output is enabled. In |
| other words, if the computer receives a STOP character, it suspends |
| output until a START character is received. In this case, the STOP |
| and START characters are never passed to the application program. |
| If this bit is not set, then START and STOP can be read as ordinary |
| characters. *Note Start/Stop Characters::. |
| |
| -- Macro: tcflag_t IXANY |
| If this bit is set, any input character restarts output when output |
| has been suspended with the STOP character. Otherwise, only the |
| START character restarts output. |
| |
| This is a BSD extension; it exists only on BSD systems and |
| GNU/Linux and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t IMAXBEL |
| If this bit is set, then filling up the terminal input buffer sends |
| a BEL character (code '007') to the terminal to ring the bell. |
| |
| This is a BSD extension. |
| |
| |
| File: libc.info, Node: Output Modes, Next: Control Modes, Prev: Input Modes, Up: Terminal Modes |
| |
| 17.4.5 Output Modes |
| ------------------- |
| |
| This section describes the terminal flags and fields that control how |
| output characters are translated and padded for display. All of these |
| are contained in the 'c_oflag' member of the 'struct termios' structure. |
| |
| The 'c_oflag' member itself is an integer, and you change the flags |
| and fields using the operators '&', '|', and '^'. Don't try to specify |
| the entire value for 'c_oflag'--instead, change only specific flags and |
| leave the rest untouched (*note Setting Modes::). |
| |
| -- Macro: tcflag_t OPOST |
| If this bit is set, output data is processed in some unspecified |
| way so that it is displayed appropriately on the terminal device. |
| This typically includes mapping newline characters (''\n'') onto |
| carriage return and linefeed pairs. |
| |
| If this bit isn't set, the characters are transmitted as-is. |
| |
| The following three bits are effective only if 'OPOST' is set. |
| |
| -- Macro: tcflag_t ONLCR |
| If this bit is set, convert the newline character on output into a |
| pair of characters, carriage return followed by linefeed. |
| |
| -- Macro: tcflag_t OXTABS |
| If this bit is set, convert tab characters on output into the |
| appropriate number of spaces to emulate a tab stop every eight |
| columns. This bit exists only on BSD systems and GNU/Hurd systems; |
| on GNU/Linux systems it is available as 'XTABS'. |
| |
| -- Macro: tcflag_t ONOEOT |
| If this bit is set, discard 'C-d' characters (code '004') on |
| output. These characters cause many dial-up terminals to |
| disconnect. This bit exists only on BSD systems and GNU/Hurd |
| systems. |
| |
| |
| File: libc.info, Node: Control Modes, Next: Local Modes, Prev: Output Modes, Up: Terminal Modes |
| |
| 17.4.6 Control Modes |
| -------------------- |
| |
| This section describes the terminal flags and fields that control |
| parameters usually associated with asynchronous serial data |
| transmission. These flags may not make sense for other kinds of |
| terminal ports (such as a network connection pseudo-terminal). All of |
| these are contained in the 'c_cflag' member of the 'struct termios' |
| structure. |
| |
| The 'c_cflag' member itself is an integer, and you change the flags |
| and fields using the operators '&', '|', and '^'. Don't try to specify |
| the entire value for 'c_cflag'--instead, change only specific flags and |
| leave the rest untouched (*note Setting Modes::). |
| |
| -- Macro: tcflag_t CLOCAL |
| If this bit is set, it indicates that the terminal is connected |
| "locally" and that the modem status lines (such as carrier detect) |
| should be ignored. |
| |
| On many systems if this bit is not set and you call 'open' without |
| the 'O_NONBLOCK' flag set, 'open' blocks until a modem connection |
| is established. |
| |
| If this bit is not set and a modem disconnect is detected, a |
| 'SIGHUP' signal is sent to the controlling process group for the |
| terminal (if it has one). Normally, this causes the process to |
| exit; see *note Signal Handling::. Reading from the terminal after |
| a disconnect causes an end-of-file condition, and writing causes an |
| 'EIO' error to be returned. The terminal device must be closed and |
| reopened to clear the condition. |
| |
| -- Macro: tcflag_t HUPCL |
| If this bit is set, a modem disconnect is generated when all |
| processes that have the terminal device open have either closed the |
| file or exited. |
| |
| -- Macro: tcflag_t CREAD |
| If this bit is set, input can be read from the terminal. |
| Otherwise, input is discarded when it arrives. |
| |
| -- Macro: tcflag_t CSTOPB |
| If this bit is set, two stop bits are used. Otherwise, only one |
| stop bit is used. |
| |
| -- Macro: tcflag_t PARENB |
| If this bit is set, generation and detection of a parity bit are |
| enabled. *Note Input Modes::, for information on how input parity |
| errors are handled. |
| |
| If this bit is not set, no parity bit is added to output |
| characters, and input characters are not checked for correct |
| parity. |
| |
| -- Macro: tcflag_t PARODD |
| This bit is only useful if 'PARENB' is set. If 'PARODD' is set, |
| odd parity is used, otherwise even parity is used. |
| |
| The control mode flags also includes a field for the number of bits |
| per character. You can use the 'CSIZE' macro as a mask to extract the |
| value, like this: 'settings.c_cflag & CSIZE'. |
| |
| -- Macro: tcflag_t CSIZE |
| This is a mask for the number of bits per character. |
| |
| -- Macro: tcflag_t CS5 |
| This specifies five bits per byte. |
| |
| -- Macro: tcflag_t CS6 |
| This specifies six bits per byte. |
| |
| -- Macro: tcflag_t CS7 |
| This specifies seven bits per byte. |
| |
| -- Macro: tcflag_t CS8 |
| This specifies eight bits per byte. |
| |
| The following four bits are BSD extensions; these exist only on BSD |
| systems and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t CCTS_OFLOW |
| If this bit is set, enable flow control of output based on the CTS |
| wire (RS232 protocol). |
| |
| -- Macro: tcflag_t CRTS_IFLOW |
| If this bit is set, enable flow control of input based on the RTS |
| wire (RS232 protocol). |
| |
| -- Macro: tcflag_t MDMBUF |
| If this bit is set, enable carrier-based flow control of output. |
| |
| -- Macro: tcflag_t CIGNORE |
| If this bit is set, it says to ignore the control modes and line |
| speed values entirely. This is only meaningful in a call to |
| 'tcsetattr'. |
| |
| The 'c_cflag' member and the line speed values returned by |
| 'cfgetispeed' and 'cfgetospeed' will be unaffected by the call. |
| 'CIGNORE' is useful if you want to set all the software modes in |
| the other members, but leave the hardware details in 'c_cflag' |
| unchanged. (This is how the 'TCSASOFT' flag to 'tcsettattr' |
| works.) |
| |
| This bit is never set in the structure filled in by 'tcgetattr'. |
| |
| |
| File: libc.info, Node: Local Modes, Next: Line Speed, Prev: Control Modes, Up: Terminal Modes |
| |
| 17.4.7 Local Modes |
| ------------------ |
| |
| This section describes the flags for the 'c_lflag' member of the 'struct |
| termios' structure. These flags generally control higher-level aspects |
| of input processing than the input modes flags described in *note Input |
| Modes::, such as echoing, signals, and the choice of canonical or |
| noncanonical input. |
| |
| The 'c_lflag' member itself is an integer, and you change the flags |
| and fields using the operators '&', '|', and '^'. Don't try to specify |
| the entire value for 'c_lflag'--instead, change only specific flags and |
| leave the rest untouched (*note Setting Modes::). |
| |
| -- Macro: tcflag_t ICANON |
| This bit, if set, enables canonical input processing mode. |
| Otherwise, input is processed in noncanonical mode. *Note |
| Canonical or Not::. |
| |
| -- Macro: tcflag_t ECHO |
| If this bit is set, echoing of input characters back to the |
| terminal is enabled. |
| |
| -- Macro: tcflag_t ECHOE |
| If this bit is set, echoing indicates erasure of input with the |
| ERASE character by erasing the last character in the current line |
| from the screen. Otherwise, the character erased is re-echoed to |
| show what has happened (suitable for a printing terminal). |
| |
| This bit only controls the display behavior; the 'ICANON' bit by |
| itself controls actual recognition of the ERASE character and |
| erasure of input, without which 'ECHOE' is simply irrelevant. |
| |
| -- Macro: tcflag_t ECHOPRT |
| This bit is like 'ECHOE', enables display of the ERASE character in |
| a way that is geared to a hardcopy terminal. When you type the |
| ERASE character, a '\' character is printed followed by the first |
| character erased. Typing the ERASE character again just prints the |
| next character erased. Then, the next time you type a normal |
| character, a '/' character is printed before the character echoes. |
| |
| This is a BSD extension, and exists only in BSD systems and |
| GNU/Linux and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t ECHOK |
| This bit enables special display of the KILL character by moving to |
| a new line after echoing the KILL character normally. The behavior |
| of 'ECHOKE' (below) is nicer to look at. |
| |
| If this bit is not set, the KILL character echoes just as it would |
| if it were not the KILL character. Then it is up to the user to |
| remember that the KILL character has erased the preceding input; |
| there is no indication of this on the screen. |
| |
| This bit only controls the display behavior; the 'ICANON' bit by |
| itself controls actual recognition of the KILL character and |
| erasure of input, without which 'ECHOK' is simply irrelevant. |
| |
| -- Macro: tcflag_t ECHOKE |
| This bit is similar to 'ECHOK'. It enables special display of the |
| KILL character by erasing on the screen the entire line that has |
| been killed. This is a BSD extension, and exists only in BSD |
| systems and GNU/Linux and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t ECHONL |
| If this bit is set and the 'ICANON' bit is also set, then the |
| newline (''\n'') character is echoed even if the 'ECHO' bit is not |
| set. |
| |
| -- Macro: tcflag_t ECHOCTL |
| If this bit is set and the 'ECHO' bit is also set, echo control |
| characters with '^' followed by the corresponding text character. |
| Thus, control-A echoes as '^A'. This is usually the preferred mode |
| for interactive input, because echoing a control character back to |
| the terminal could have some undesired effect on the terminal. |
| |
| This is a BSD extension, and exists only in BSD systems and |
| GNU/Linux and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t ISIG |
| This bit controls whether the INTR, QUIT, and SUSP characters are |
| recognized. The functions associated with these characters are |
| performed if and only if this bit is set. Being in canonical or |
| noncanonical input mode has no affect on the interpretation of |
| these characters. |
| |
| You should use caution when disabling recognition of these |
| characters. Programs that cannot be interrupted interactively are |
| very user-unfriendly. If you clear this bit, your program should |
| provide some alternate interface that allows the user to |
| interactively send the signals associated with these characters, or |
| to escape from the program. |
| |
| *Note Signal Characters::. |
| |
| -- Macro: tcflag_t IEXTEN |
| POSIX.1 gives 'IEXTEN' implementation-defined meaning, so you |
| cannot rely on this interpretation on all systems. |
| |
| On BSD systems and GNU/Linux and GNU/Hurd systems, it enables the |
| LNEXT and DISCARD characters. *Note Other Special::. |
| |
| -- Macro: tcflag_t NOFLSH |
| Normally, the INTR, QUIT, and SUSP characters cause input and |
| output queues for the terminal to be cleared. If this bit is set, |
| the queues are not cleared. |
| |
| -- Macro: tcflag_t TOSTOP |
| If this bit is set and the system supports job control, then |
| 'SIGTTOU' signals are generated by background processes that |
| attempt to write to the terminal. *Note Access to the Terminal::. |
| |
| The following bits are BSD extensions; they exist only on BSD systems |
| and GNU/Hurd systems. |
| |
| -- Macro: tcflag_t ALTWERASE |
| This bit determines how far the WERASE character should erase. The |
| WERASE character erases back to the beginning of a word; the |
| question is, where do words begin? |
| |
| If this bit is clear, then the beginning of a word is a |
| nonwhitespace character following a whitespace character. If the |
| bit is set, then the beginning of a word is an alphanumeric |
| character or underscore following a character which is none of |
| those. |
| |
| *Note Editing Characters::, for more information about the WERASE |
| character. |
| |
| -- Macro: tcflag_t FLUSHO |
| This is the bit that toggles when the user types the DISCARD |
| character. While this bit is set, all output is discarded. *Note |
| Other Special::. |
| |
| -- Macro: tcflag_t NOKERNINFO |
| Setting this bit disables handling of the STATUS character. *Note |
| Other Special::. |
| |
| -- Macro: tcflag_t PENDIN |
| If this bit is set, it indicates that there is a line of input that |
| needs to be reprinted. Typing the REPRINT character sets this bit; |
| the bit remains set until reprinting is finished. *Note Editing |
| Characters::. |
| |
| |
| File: libc.info, Node: Line Speed, Next: Special Characters, Prev: Local Modes, Up: Terminal Modes |
| |
| 17.4.8 Line Speed |
| ----------------- |
| |
| The terminal line speed tells the computer how fast to read and write |
| data on the terminal. |
| |
| If the terminal is connected to a real serial line, the terminal |
| speed you specify actually controls the line--if it doesn't match the |
| terminal's own idea of the speed, communication does not work. Real |
| serial ports accept only certain standard speeds. Also, particular |
| hardware may not support even all the standard speeds. Specifying a |
| speed of zero hangs up a dialup connection and turns off modem control |
| signals. |
| |
| If the terminal is not a real serial line (for example, if it is a |
| network connection), then the line speed won't really affect data |
| transmission speed, but some programs will use it to determine the |
| amount of padding needed. It's best to specify a line speed value that |
| matches the actual speed of the actual terminal, but you can safely |
| experiment with different values to vary the amount of padding. |
| |
| There are actually two line speeds for each terminal, one for input |
| and one for output. You can set them independently, but most often |
| terminals use the same speed for both directions. |
| |
| The speed values are stored in the 'struct termios' structure, but |
| don't try to access them in the 'struct termios' structure directly. |
| Instead, you should use the following functions to read and store them: |
| |
| -- Function: speed_t cfgetospeed (const struct termios *TERMIOS-P) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function returns the output line speed stored in the structure |
| '*TERMIOS-P'. |
| |
| -- Function: speed_t cfgetispeed (const struct termios *TERMIOS-P) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function returns the input line speed stored in the structure |
| '*TERMIOS-P'. |
| |
| -- Function: int cfsetospeed (struct termios *TERMIOS-P, speed_t SPEED) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function stores SPEED in '*TERMIOS-P' as the output speed. |
| The normal return value is 0; a value of -1 indicates an error. If |
| SPEED is not a speed, 'cfsetospeed' returns -1. |
| |
| -- Function: int cfsetispeed (struct termios *TERMIOS-P, speed_t SPEED) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function stores SPEED in '*TERMIOS-P' as the input speed. The |
| normal return value is 0; a value of -1 indicates an error. If |
| SPEED is not a speed, 'cfsetospeed' returns -1. |
| |
| -- Function: int cfsetspeed (struct termios *TERMIOS-P, speed_t SPEED) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function stores SPEED in '*TERMIOS-P' as both the input and |
| output speeds. The normal return value is 0; a value of -1 |
| indicates an error. If SPEED is not a speed, 'cfsetspeed' returns |
| -1. This function is an extension in 4.4 BSD. |
| |
| -- Data Type: speed_t |
| The 'speed_t' type is an unsigned integer data type used to |
| represent line speeds. |
| |
| The functions 'cfsetospeed' and 'cfsetispeed' report errors only for |
| speed values that the system simply cannot handle. If you specify a |
| speed value that is basically acceptable, then those functions will |
| succeed. But they do not check that a particular hardware device can |
| actually support the specified speeds--in fact, they don't know which |
| device you plan to set the speed for. If you use 'tcsetattr' to set the |
| speed of a particular device to a value that it cannot handle, |
| 'tcsetattr' returns -1. |
| |
| *Portability note:* In the GNU C Library, the functions above accept |
| speeds measured in bits per second as input, and return speed values |
| measured in bits per second. Other libraries require speeds to be |
| indicated by special codes. For POSIX.1 portability, you must use one |
| of the following symbols to represent the speed; their precise numeric |
| values are system-dependent, but each name has a fixed meaning: 'B110' |
| stands for 110 bps, 'B300' for 300 bps, and so on. There is no portable |
| way to represent any speed but these, but these are the only speeds that |
| typical serial lines can support. |
| |
| B0 B50 B75 B110 B134 B150 B200 |
| B300 B600 B1200 B1800 B2400 B4800 |
| B9600 B19200 B38400 B57600 B115200 |
| B230400 B460800 |
| |
| BSD defines two additional speed symbols as aliases: 'EXTA' is an |
| alias for 'B19200' and 'EXTB' is an alias for 'B38400'. These aliases |
| are obsolete. |
| |
| |
| File: libc.info, Node: Special Characters, Next: Noncanonical Input, Prev: Line Speed, Up: Terminal Modes |
| |
| 17.4.9 Special Characters |
| ------------------------- |
| |
| In canonical input, the terminal driver recognizes a number of special |
| characters which perform various control functions. These include the |
| ERASE character (usually <DEL>) for editing input, and other editing |
| characters. The INTR character (normally 'C-c') for sending a 'SIGINT' |
| signal, and other signal-raising characters, may be available in either |
| canonical or noncanonical input mode. All these characters are |
| described in this section. |
| |
| The particular characters used are specified in the 'c_cc' member of |
| the 'struct termios' structure. This member is an array; each element |
| specifies the character for a particular role. Each element has a |
| symbolic constant that stands for the index of that element--for |
| example, 'VINTR' is the index of the element that specifies the INTR |
| character, so storing ''='' in 'TERMIOS.c_cc[VINTR]' specifies '=' as |
| the INTR character. |
| |
| On some systems, you can disable a particular special character |
| function by specifying the value '_POSIX_VDISABLE' for that role. This |
| value is unequal to any possible character code. *Note Options for |
| Files::, for more information about how to tell whether the operating |
| system you are using supports '_POSIX_VDISABLE'. |
| |
| * Menu: |
| |
| * Editing Characters:: Special characters that terminate lines and |
| delete text, and other editing functions. |
| * Signal Characters:: Special characters that send or raise signals |
| to or for certain classes of processes. |
| * Start/Stop Characters:: Special characters that suspend or resume |
| suspended output. |
| * Other Special:: Other special characters for BSD systems: |
| they can discard output, and print status. |
| |
| |
| File: libc.info, Node: Editing Characters, Next: Signal Characters, Up: Special Characters |
| |
| 17.4.9.1 Characters for Input Editing |
| ..................................... |
| |
| These special characters are active only in canonical input mode. *Note |
| Canonical or Not::. |
| |
| -- Macro: int VEOF |
| This is the subscript for the EOF character in the special control |
| character array. 'TERMIOS.c_cc[VEOF]' holds the character itself. |
| |
| The EOF character is recognized only in canonical input mode. It |
| acts as a line terminator in the same way as a newline character, |
| but if the EOF character is typed at the beginning of a line it |
| causes 'read' to return a byte count of zero, indicating |
| end-of-file. The EOF character itself is discarded. |
| |
| Usually, the EOF character is 'C-d'. |
| |
| -- Macro: int VEOL |
| This is the subscript for the EOL character in the special control |
| character array. 'TERMIOS.c_cc[VEOL]' holds the character itself. |
| |
| The EOL character is recognized only in canonical input mode. It |
| acts as a line terminator, just like a newline character. The EOL |
| character is not discarded; it is read as the last character in the |
| input line. |
| |
| You don't need to use the EOL character to make <RET> end a line. |
| Just set the ICRNL flag. In fact, this is the default state of |
| affairs. |
| |
| -- Macro: int VEOL2 |
| This is the subscript for the EOL2 character in the special control |
| character array. 'TERMIOS.c_cc[VEOL2]' holds the character itself. |
| |
| The EOL2 character works just like the EOL character (see above), |
| but it can be a different character. Thus, you can specify two |
| characters to terminate an input line, by setting EOL to one of |
| them and EOL2 to the other. |
| |
| The EOL2 character is a BSD extension; it exists only on BSD |
| systems and GNU/Linux and GNU/Hurd systems. |
| |
| -- Macro: int VERASE |
| This is the subscript for the ERASE character in the special |
| control character array. 'TERMIOS.c_cc[VERASE]' holds the |
| character itself. |
| |
| The ERASE character is recognized only in canonical input mode. |
| When the user types the erase character, the previous character |
| typed is discarded. (If the terminal generates multibyte character |
| sequences, this may cause more than one byte of input to be |
| discarded.) This cannot be used to erase past the beginning of the |
| current line of text. The ERASE character itself is discarded. |
| |
| Usually, the ERASE character is <DEL>. |
| |
| -- Macro: int VWERASE |
| This is the subscript for the WERASE character in the special |
| control character array. 'TERMIOS.c_cc[VWERASE]' holds the |
| character itself. |
| |
| The WERASE character is recognized only in canonical mode. It |
| erases an entire word of prior input, and any whitespace after it; |
| whitespace characters before the word are not erased. |
| |
| The definition of a "word" depends on the setting of the |
| 'ALTWERASE' mode; *note Local Modes::. |
| |
| If the 'ALTWERASE' mode is not set, a word is defined as a sequence |
| of any characters except space or tab. |
| |
| If the 'ALTWERASE' mode is set, a word is defined as a sequence of |
| characters containing only letters, numbers, and underscores, |
| optionally followed by one character that is not a letter, number, |
| or underscore. |
| |
| The WERASE character is usually 'C-w'. |
| |
| This is a BSD extension. |
| |
| -- Macro: int VKILL |
| This is the subscript for the KILL character in the special control |
| character array. 'TERMIOS.c_cc[VKILL]' holds the character itself. |
| |
| The KILL character is recognized only in canonical input mode. |
| When the user types the kill character, the entire contents of the |
| current line of input are discarded. The kill character itself is |
| discarded too. |
| |
| The KILL character is usually 'C-u'. |
| |
| -- Macro: int VREPRINT |
| This is the subscript for the REPRINT character in the special |
| control character array. 'TERMIOS.c_cc[VREPRINT]' holds the |
| character itself. |
| |
| The REPRINT character is recognized only in canonical mode. It |
| reprints the current input line. If some asynchronous output has |
| come while you are typing, this lets you see the line you are |
| typing clearly again. |
| |
| The REPRINT character is usually 'C-r'. |
| |
| This is a BSD extension. |
| |
| |
| File: libc.info, Node: Signal Characters, Next: Start/Stop Characters, Prev: Editing Characters, Up: Special Characters |
| |
| 17.4.9.2 Characters that Cause Signals |
| ...................................... |
| |
| These special characters may be active in either canonical or |
| noncanonical input mode, but only when the 'ISIG' flag is set (*note |
| Local Modes::). |
| |
| -- Macro: int VINTR |
| This is the subscript for the INTR character in the special control |
| character array. 'TERMIOS.c_cc[VINTR]' holds the character itself. |
| |
| The INTR (interrupt) character raises a 'SIGINT' signal for all |
| processes in the foreground job associated with the terminal. The |
| INTR character itself is then discarded. *Note Signal Handling::, |
| for more information about signals. |
| |
| Typically, the INTR character is 'C-c'. |
| |
| -- Macro: int VQUIT |
| This is the subscript for the QUIT character in the special control |
| character array. 'TERMIOS.c_cc[VQUIT]' holds the character itself. |
| |
| The QUIT character raises a 'SIGQUIT' signal for all processes in |
| the foreground job associated with the terminal. The QUIT |
| character itself is then discarded. *Note Signal Handling::, for |
| more information about signals. |
| |
| Typically, the QUIT character is 'C-\'. |
| |
| -- Macro: int VSUSP |
| This is the subscript for the SUSP character in the special control |
| character array. 'TERMIOS.c_cc[VSUSP]' holds the character itself. |
| |
| The SUSP (suspend) character is recognized only if the |
| implementation supports job control (*note Job Control::). It |
| causes a 'SIGTSTP' signal to be sent to all processes in the |
| foreground job associated with the terminal. The SUSP character |
| itself is then discarded. *Note Signal Handling::, for more |
| information about signals. |
| |
| Typically, the SUSP character is 'C-z'. |
| |
| Few applications disable the normal interpretation of the SUSP |
| character. If your program does this, it should provide some other |
| mechanism for the user to stop the job. When the user invokes this |
| mechanism, the program should send a 'SIGTSTP' signal to the process |
| group of the process, not just to the process itself. *Note Signaling |
| Another Process::. |
| |
| -- Macro: int VDSUSP |
| This is the subscript for the DSUSP character in the special |
| control character array. 'TERMIOS.c_cc[VDSUSP]' holds the |
| character itself. |
| |
| The DSUSP (suspend) character is recognized only if the |
| implementation supports job control (*note Job Control::). It |
| sends a 'SIGTSTP' signal, like the SUSP character, but not right |
| away--only when the program tries to read it as input. Not all |
| systems with job control support DSUSP; only BSD-compatible systems |
| (including GNU/Hurd systems). |
| |
| *Note Signal Handling::, for more information about signals. |
| |
| Typically, the DSUSP character is 'C-y'. |
| |
| |
| File: libc.info, Node: Start/Stop Characters, Next: Other Special, Prev: Signal Characters, Up: Special Characters |
| |
| 17.4.9.3 Special Characters for Flow Control |
| ............................................ |
| |
| These special characters may be active in either canonical or |
| noncanonical input mode, but their use is controlled by the flags 'IXON' |
| and 'IXOFF' (*note Input Modes::). |
| |
| -- Macro: int VSTART |
| This is the subscript for the START character in the special |
| control character array. 'TERMIOS.c_cc[VSTART]' holds the |
| character itself. |
| |
| The START character is used to support the 'IXON' and 'IXOFF' input |
| modes. If 'IXON' is set, receiving a START character resumes |
| suspended output; the START character itself is discarded. If |
| 'IXANY' is set, receiving any character at all resumes suspended |
| output; the resuming character is not discarded unless it is the |
| START character. 'IXOFF' is set, the system may also transmit |
| START characters to the terminal. |
| |
| The usual value for the START character is 'C-q'. You may not be |
| able to change this value--the hardware may insist on using 'C-q' |
| regardless of what you specify. |
| |
| -- Macro: int VSTOP |
| This is the subscript for the STOP character in the special control |
| character array. 'TERMIOS.c_cc[VSTOP]' holds the character itself. |
| |
| The STOP character is used to support the 'IXON' and 'IXOFF' input |
| modes. If 'IXON' is set, receiving a STOP character causes output |
| to be suspended; the STOP character itself is discarded. If |
| 'IXOFF' is set, the system may also transmit STOP characters to the |
| terminal, to prevent the input queue from overflowing. |
| |
| The usual value for the STOP character is 'C-s'. You may not be |
| able to change this value--the hardware may insist on using 'C-s' |
| regardless of what you specify. |
| |
| |
| File: libc.info, Node: Other Special, Prev: Start/Stop Characters, Up: Special Characters |
| |
| 17.4.9.4 Other Special Characters |
| ................................. |
| |
| -- Macro: int VLNEXT |
| This is the subscript for the LNEXT character in the special |
| control character array. 'TERMIOS.c_cc[VLNEXT]' holds the |
| character itself. |
| |
| The LNEXT character is recognized only when 'IEXTEN' is set, but in |
| both canonical and noncanonical mode. It disables any special |
| significance of the next character the user types. Even if the |
| character would normally perform some editing function or generate |
| a signal, it is read as a plain character. This is the analogue of |
| the 'C-q' command in Emacs. "LNEXT" stands for "literal next." |
| |
| The LNEXT character is usually 'C-v'. |
| |
| This character is available on BSD systems and GNU/Linux and |
| GNU/Hurd systems. |
| |
| -- Macro: int VDISCARD |
| This is the subscript for the DISCARD character in the special |
| control character array. 'TERMIOS.c_cc[VDISCARD]' holds the |
| character itself. |
| |
| The DISCARD character is recognized only when 'IEXTEN' is set, but |
| in both canonical and noncanonical mode. Its effect is to toggle |
| the discard-output flag. When this flag is set, all program output |
| is discarded. Setting the flag also discards all output currently |
| in the output buffer. Typing any other character resets the flag. |
| |
| This character is available on BSD systems and GNU/Linux and |
| GNU/Hurd systems. |
| |
| -- Macro: int VSTATUS |
| This is the subscript for the STATUS character in the special |
| control character array. 'TERMIOS.c_cc[VSTATUS]' holds the |
| character itself. |
| |
| The STATUS character's effect is to print out a status message |
| about how the current process is running. |
| |
| The STATUS character is recognized only in canonical mode, and only |
| if 'NOKERNINFO' is not set. |
| |
| This character is available only on BSD systems and GNU/Hurd |
| systems. |
| |
| |
| File: libc.info, Node: Noncanonical Input, Prev: Special Characters, Up: Terminal Modes |
| |
| 17.4.10 Noncanonical Input |
| -------------------------- |
| |
| In noncanonical input mode, the special editing characters such as ERASE |
| and KILL are ignored. The system facilities for the user to edit input |
| are disabled in noncanonical mode, so that all input characters (unless |
| they are special for signal or flow-control purposes) are passed to the |
| application program exactly as typed. It is up to the application |
| program to give the user ways to edit the input, if appropriate. |
| |
| Noncanonical mode offers special parameters called MIN and TIME for |
| controlling whether and how long to wait for input to be available. You |
| can even use them to avoid ever waiting--to return immediately with |
| whatever input is available, or with no input. |
| |
| The MIN and TIME are stored in elements of the 'c_cc' array, which is |
| a member of the 'struct termios' structure. Each element of this array |
| has a particular role, and each element has a symbolic constant that |
| stands for the index of that element. 'VMIN' and 'VMAX' are the names |
| for the indices in the array of the MIN and TIME slots. |
| |
| -- Macro: int VMIN |
| This is the subscript for the MIN slot in the 'c_cc' array. Thus, |
| 'TERMIOS.c_cc[VMIN]' is the value itself. |
| |
| The MIN slot is only meaningful in noncanonical input mode; it |
| specifies the minimum number of bytes that must be available in the |
| input queue in order for 'read' to return. |
| |
| -- Macro: int VTIME |
| This is the subscript for the TIME slot in the 'c_cc' array. Thus, |
| 'TERMIOS.c_cc[VTIME]' is the value itself. |
| |
| The TIME slot is only meaningful in noncanonical input mode; it |
| specifies how long to wait for input before returning, in units of |
| 0.1 seconds. |
| |
| The MIN and TIME values interact to determine the criterion for when |
| 'read' should return; their precise meanings depend on which of them are |
| nonzero. There are four possible cases: |
| |
| * Both TIME and MIN are nonzero. |
| |
| In this case, TIME specifies how long to wait after each input |
| character to see if more input arrives. After the first character |
| received, 'read' keeps waiting until either MIN bytes have arrived |
| in all, or TIME elapses with no further input. |
| |
| 'read' always blocks until the first character arrives, even if |
| TIME elapses first. 'read' can return more than MIN characters if |
| more than MIN happen to be in the queue. |
| |
| * Both MIN and TIME are zero. |
| |
| In this case, 'read' always returns immediately with as many |
| characters as are available in the queue, up to the number |
| requested. If no input is immediately available, 'read' returns a |
| value of zero. |
| |
| * MIN is zero but TIME has a nonzero value. |
| |
| In this case, 'read' waits for time TIME for input to become |
| available; the availability of a single byte is enough to satisfy |
| the read request and cause 'read' to return. When it returns, it |
| returns as many characters as are available, up to the number |
| requested. If no input is available before the timer expires, |
| 'read' returns a value of zero. |
| |
| * TIME is zero but MIN has a nonzero value. |
| |
| In this case, 'read' waits until at least MIN bytes are available |
| in the queue. At that time, 'read' returns as many characters as |
| are available, up to the number requested. 'read' can return more |
| than MIN characters if more than MIN happen to be in the queue. |
| |
| What happens if MIN is 50 and you ask to read just 10 bytes? |
| Normally, 'read' waits until there are 50 bytes in the buffer (or, more |
| generally, the wait condition described above is satisfied), and then |
| reads 10 of them, leaving the other 40 buffered in the operating system |
| for a subsequent call to 'read'. |
| |
| *Portability note:* On some systems, the MIN and TIME slots are |
| actually the same as the EOF and EOL slots. This causes no serious |
| problem because the MIN and TIME slots are used only in noncanonical |
| input and the EOF and EOL slots are used only in canonical input, but it |
| isn't very clean. The GNU C Library allocates separate slots for these |
| uses. |
| |
| -- Function: void cfmakeraw (struct termios *TERMIOS-P) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function provides an easy way to set up '*TERMIOS-P' for what |
| has traditionally been called "raw mode" in BSD. This uses |
| noncanonical input, and turns off most processing to give an |
| unmodified channel to the terminal. |
| |
| It does exactly this: |
| TERMIOS-P->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP |
| |INLCR|IGNCR|ICRNL|IXON); |
| TERMIOS-P->c_oflag &= ~OPOST; |
| TERMIOS-P->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); |
| TERMIOS-P->c_cflag &= ~(CSIZE|PARENB); |
| TERMIOS-P->c_cflag |= CS8; |
| |
| |
| File: libc.info, Node: BSD Terminal Modes, Next: Line Control, Prev: Terminal Modes, Up: Low-Level Terminal Interface |
| |
| 17.5 BSD Terminal Modes |
| ======================= |
| |
| The usual way to get and set terminal modes is with the functions |
| described in *note Terminal Modes::. However, on some systems you can |
| use the BSD-derived functions in this section to do some of the same |
| thing. On many systems, these functions do not exist. Even with the |
| GNU C Library, the functions simply fail with 'errno' = 'ENOSYS' with |
| many kernels, including Linux. |
| |
| The symbols used in this section are declared in 'sgtty.h'. |
| |
| -- Data Type: struct sgttyb |
| This structure is an input or output parameter list for 'gtty' and |
| 'stty'. |
| |
| 'char sg_ispeed' |
| Line speed for input |
| 'char sg_ospeed' |
| Line speed for output |
| 'char sg_erase' |
| Erase character |
| 'char sg_kill' |
| Kill character |
| 'int sg_flags' |
| Various flags |
| |
| -- Function: int gtty (int FILEDES, struct sgttyb *ATTRIBUTES) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function gets the attributes of a terminal. |
| |
| 'gtty' sets *ATTRIBUTES to describe the terminal attributes of the |
| terminal which is open with file descriptor FILEDES. |
| |
| -- Function: int stty (int FILEDES, const struct sgttyb *ATTRIBUTES) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function sets the attributes of a terminal. |
| |
| 'stty' sets the terminal attributes of the terminal which is open |
| with file descriptor FILEDES to those described by *FILEDES. |
| |
| |
| File: libc.info, Node: Line Control, Next: Noncanon Example, Prev: BSD Terminal Modes, Up: Low-Level Terminal Interface |
| |
| 17.6 Line Control Functions |
| =========================== |
| |
| These functions perform miscellaneous control actions on terminal |
| devices. As regards terminal access, they are treated like doing |
| output: if any of these functions is used by a background process on its |
| controlling terminal, normally all processes in the process group are |
| sent a 'SIGTTOU' signal. The exception is if the calling process itself |
| is ignoring or blocking 'SIGTTOU' signals, in which case the operation |
| is performed and no signal is sent. *Note Job Control::. |
| |
| -- Function: int tcsendbreak (int FILEDES, int DURATION) |
| Preliminary: | MT-Unsafe race:tcattr(filedes)/bsd | AS-Unsafe | |
| AC-Unsafe corrupt/bsd | *Note POSIX Safety Concepts::. |
| |
| This function generates a break condition by transmitting a stream |
| of zero bits on the terminal associated with the file descriptor |
| FILEDES. The duration of the break is controlled by the DURATION |
| argument. If zero, the duration is between 0.25 and 0.5 seconds. |
| The meaning of a nonzero value depends on the operating system. |
| |
| This function does nothing if the terminal is not an asynchronous |
| serial data port. |
| |
| The return value is normally zero. In the event of an error, a |
| value of -1 is returned. The following 'errno' error conditions |
| are defined for this function: |
| |
| 'EBADF' |
| The FILEDES is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal device. |
| |
| -- Function: int tcdrain (int FILEDES) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| The 'tcdrain' function waits until all queued output to the |
| terminal FILEDES has been transmitted. |
| |
| This function is a cancellation point in multi-threaded programs. |
| This is a problem if the thread allocates some resources (like |
| memory, file descriptors, semaphores or whatever) at the time |
| 'tcdrain' is called. If the thread gets canceled these resources |
| stay allocated until the program ends. To avoid this calls to |
| 'tcdrain' should be protected using cancellation handlers. |
| |
| The return value is normally zero. In the event of an error, a |
| value of -1 is returned. The following 'errno' error conditions |
| are defined for this function: |
| |
| 'EBADF' |
| The FILEDES is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal device. |
| |
| 'EINTR' |
| The operation was interrupted by delivery of a signal. *Note |
| Interrupted Primitives::. |
| |
| -- Function: int tcflush (int FILEDES, int QUEUE) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| The 'tcflush' function is used to clear the input and/or output |
| queues associated with the terminal file FILEDES. The QUEUE |
| argument specifies which queue(s) to clear, and can be one of the |
| following values: |
| |
| 'TCIFLUSH' |
| |
| Clear any input data received, but not yet read. |
| |
| 'TCOFLUSH' |
| |
| Clear any output data written, but not yet transmitted. |
| |
| 'TCIOFLUSH' |
| |
| Clear both queued input and output. |
| |
| The return value is normally zero. In the event of an error, a |
| value of -1 is returned. The following 'errno' error conditions |
| are defined for this function: |
| |
| 'EBADF' |
| The FILEDES is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal device. |
| |
| 'EINVAL' |
| A bad value was supplied as the QUEUE argument. |
| |
| It is unfortunate that this function is named 'tcflush', because |
| the term "flush" is normally used for quite another |
| operation--waiting until all output is transmitted--and using it |
| for discarding input or output would be confusing. Unfortunately, |
| the name 'tcflush' comes from POSIX and we cannot change it. |
| |
| -- Function: int tcflow (int FILEDES, int ACTION) |
| Preliminary: | MT-Unsafe race:tcattr(filedes)/bsd | AS-Unsafe | |
| AC-Safe | *Note POSIX Safety Concepts::. |
| |
| The 'tcflow' function is used to perform operations relating to |
| XON/XOFF flow control on the terminal file specified by FILEDES. |
| |
| The ACTION argument specifies what operation to perform, and can be |
| one of the following values: |
| |
| 'TCOOFF' |
| Suspend transmission of output. |
| |
| 'TCOON' |
| Restart transmission of output. |
| |
| 'TCIOFF' |
| Transmit a STOP character. |
| |
| 'TCION' |
| Transmit a START character. |
| |
| For more information about the STOP and START characters, see *note |
| Special Characters::. |
| |
| The return value is normally zero. In the event of an error, a |
| value of -1 is returned. The following 'errno' error conditions |
| are defined for this function: |
| |
| 'EBADF' |
| The FILEDES is not a valid file descriptor. |
| |
| 'ENOTTY' |
| The FILEDES is not associated with a terminal device. |
| |
| 'EINVAL' |
| A bad value was supplied as the ACTION argument. |
| |
| |
| File: libc.info, Node: Noncanon Example, Next: Pseudo-Terminals, Prev: Line Control, Up: Low-Level Terminal Interface |
| |
| 17.7 Noncanonical Mode Example |
| ============================== |
| |
| Here is an example program that shows how you can set up a terminal |
| device to read single characters in noncanonical input mode, without |
| echo. |
| |
| |
| #include <unistd.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <termios.h> |
| |
| /* Use this variable to remember original terminal attributes. */ |
| |
| struct termios saved_attributes; |
| |
| void |
| reset_input_mode (void) |
| { |
| tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes); |
| } |
| |
| void |
| set_input_mode (void) |
| { |
| struct termios tattr; |
| char *name; |
| |
| /* Make sure stdin is a terminal. */ |
| if (!isatty (STDIN_FILENO)) |
| { |
| fprintf (stderr, "Not a terminal.\n"); |
| exit (EXIT_FAILURE); |
| } |
| |
| /* Save the terminal attributes so we can restore them later. */ |
| tcgetattr (STDIN_FILENO, &saved_attributes); |
| atexit (reset_input_mode); |
| |
| /* Set the funny terminal modes. */ |
| tcgetattr (STDIN_FILENO, &tattr); |
| tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */ |
| tattr.c_cc[VMIN] = 1; |
| tattr.c_cc[VTIME] = 0; |
| tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr); |
| } |
| |
| int |
| main (void) |
| { |
| char c; |
| |
| set_input_mode (); |
| |
| while (1) |
| { |
| read (STDIN_FILENO, &c, 1); |
| if (c == '\004') /* 'C-d' */ |
| break; |
| else |
| putchar (c); |
| } |
| |
| return EXIT_SUCCESS; |
| } |
| |
| This program is careful to restore the original terminal modes before |
| exiting or terminating with a signal. It uses the 'atexit' function |
| (*note Cleanups on Exit::) to make sure this is done by 'exit'. |
| |
| The shell is supposed to take care of resetting the terminal modes |
| when a process is stopped or continued; see *note Job Control::. But |
| some existing shells do not actually do this, so you may wish to |
| establish handlers for job control signals that reset terminal modes. |
| The above example does so. |
| |
| |
| File: libc.info, Node: Pseudo-Terminals, Prev: Noncanon Example, Up: Low-Level Terminal Interface |
| |
| 17.8 Pseudo-Terminals |
| ===================== |
| |
| A "pseudo-terminal" is a special interprocess communication channel that |
| acts like a terminal. One end of the channel is called the "master" |
| side or "master pseudo-terminal device", the other side is called the |
| "slave" side. Data written to the master side is received by the slave |
| side as if it was the result of a user typing at an ordinary terminal, |
| and data written to the slave side is sent to the master side as if it |
| was written on an ordinary terminal. |
| |
| Pseudo terminals are the way programs like 'xterm' and 'emacs' |
| implement their terminal emulation functionality. |
| |
| * Menu: |
| |
| * Allocation:: Allocating a pseudo terminal. |
| * Pseudo-Terminal Pairs:: How to open both sides of a |
| pseudo-terminal in a single operation. |
| |
| |
| File: libc.info, Node: Allocation, Next: Pseudo-Terminal Pairs, Up: Pseudo-Terminals |
| |
| 17.8.1 Allocating Pseudo-Terminals |
| ---------------------------------- |
| |
| This subsection describes functions for allocating a pseudo-terminal, |
| and for making this pseudo-terminal available for actual use. These |
| functions are declared in the header file 'stdlib.h'. |
| |
| -- Function: int getpt (void) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe fd | *Note POSIX Safety |
| Concepts::. |
| |
| The 'getpt' function returns a new file descriptor for the next |
| available master pseudo-terminal. The normal return value from |
| 'getpt' is a non-negative integer file descriptor. In the case of |
| an error, a value of -1 is returned instead. The following 'errno' |
| conditions are defined for this function: |
| |
| 'ENOENT' |
| There are no free master pseudo-terminals available. |
| |
| This function is a GNU extension. |
| |
| -- Function: int grantpt (int FILEDES) |
| Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock | |
| AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::. |
| |
| The 'grantpt' function changes the ownership and access permission |
| of the slave pseudo-terminal device corresponding to the master |
| pseudo-terminal device associated with the file descriptor FILEDES. |
| The owner is set from the real user ID of the calling process |
| (*note Process Persona::), and the group is set to a special group |
| (typically "tty") or from the real group ID of the calling process. |
| The access permission is set such that the file is both readable |
| and writable by the owner and only writable by the group. |
| |
| On some systems this function is implemented by invoking a special |
| 'setuid' root program (*note How Change Persona::). As a |
| consequence, installing a signal handler for the 'SIGCHLD' signal |
| (*note Job Control Signals::) may interfere with a call to |
| 'grantpt'. |
| |
| The normal return value from 'grantpt' is 0; a value of -1 is |
| returned in case of failure. The following 'errno' error |
| conditions are defined for this function: |
| |
| 'EBADF' |
| The FILEDES argument is not a valid file descriptor. |
| |
| 'EINVAL' |
| The FILEDES argument is not associated with a master |
| pseudo-terminal device. |
| |
| 'EACCES' |
| The slave pseudo-terminal device corresponding to the master |
| associated with FILEDES could not be accessed. |
| |
| -- Function: int unlockpt (int FILEDES) |
| Preliminary: | MT-Safe | AS-Unsafe heap/bsd | AC-Unsafe mem fd | |
| *Note POSIX Safety Concepts::. |
| |
| The 'unlockpt' function unlocks the slave pseudo-terminal device |
| corresponding to the master pseudo-terminal device associated with |
| the file descriptor FILEDES. On many systems, the slave can only |
| be opened after unlocking, so portable applications should always |
| call 'unlockpt' before trying to open the slave. |
| |
| The normal return value from 'unlockpt' is 0; a value of -1 is |
| returned in case of failure. The following 'errno' error |
| conditions are defined for this function: |
| |
| 'EBADF' |
| The FILEDES argument is not a valid file descriptor. |
| |
| 'EINVAL' |
| The FILEDES argument is not associated with a master |
| pseudo-terminal device. |
| |
| -- Function: char * ptsname (int FILEDES) |
| Preliminary: | MT-Unsafe race:ptsname | AS-Unsafe heap/bsd | |
| AC-Unsafe mem fd | *Note POSIX Safety Concepts::. |
| |
| If the file descriptor FILEDES is associated with a master |
| pseudo-terminal device, the 'ptsname' function returns a pointer to |
| a statically-allocated, null-terminated string containing the file |
| name of the associated slave pseudo-terminal file. This string |
| might be overwritten by subsequent calls to 'ptsname'. |
| |
| -- Function: int ptsname_r (int FILEDES, char *BUF, size_t LEN) |
| Preliminary: | MT-Safe | AS-Unsafe heap/bsd | AC-Unsafe mem fd | |
| *Note POSIX Safety Concepts::. |
| |
| The 'ptsname_r' function is similar to the 'ptsname' function |
| except that it places its result into the user-specified buffer |
| starting at BUF with length LEN. |
| |
| This function is a GNU extension. |
| |
| *Portability Note:* On System V derived systems, the file returned by |
| the 'ptsname' and 'ptsname_r' functions may be STREAMS-based, and |
| therefore require additional processing after opening before it actually |
| behaves as a pseudo terminal. |
| |
| Typical usage of these functions is illustrated by the following |
| example: |
| int |
| open_pty_pair (int *amaster, int *aslave) |
| { |
| int master, slave; |
| char *name; |
| |
| master = getpt (); |
| if (master < 0) |
| return 0; |
| |
| if (grantpt (master) < 0 || unlockpt (master) < 0) |
| goto close_master; |
| name = ptsname (master); |
| if (name == NULL) |
| goto close_master; |
| |
| slave = open (name, O_RDWR); |
| if (slave == -1) |
| goto close_master; |
| |
| if (isastream (slave)) |
| { |
| if (ioctl (slave, I_PUSH, "ptem") < 0 |
| || ioctl (slave, I_PUSH, "ldterm") < 0) |
| goto close_slave; |
| } |
| |
| *amaster = master; |
| *aslave = slave; |
| return 1; |
| |
| close_slave: |
| close (slave); |
| |
| close_master: |
| close (master); |
| return 0; |
| } |
| |
| |
| File: libc.info, Node: Pseudo-Terminal Pairs, Prev: Allocation, Up: Pseudo-Terminals |
| |
| 17.8.2 Opening a Pseudo-Terminal Pair |
| ------------------------------------- |
| |
| These functions, derived from BSD, are available in the separate |
| 'libutil' library, and declared in 'pty.h'. |
| |
| -- Function: int openpty (int *AMASTER, int *ASLAVE, char *NAME, const |
| struct termios *TERMP, const struct winsize *WINP) |
| Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock | |
| AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::. |
| |
| This function allocates and opens a pseudo-terminal pair, returning |
| the file descriptor for the master in *AMASTER, and the file |
| descriptor for the slave in *ASLAVE. If the argument NAME is not a |
| null pointer, the file name of the slave pseudo-terminal device is |
| stored in '*name'. If TERMP is not a null pointer, the terminal |
| attributes of the slave are set to the ones specified in the |
| structure that TERMP points to (*note Terminal Modes::). Likewise, |
| if the WINP is not a null pointer, the screen size of the slave is |
| set to the values specified in the structure that WINP points to. |
| |
| The normal return value from 'openpty' is 0; a value of -1 is |
| returned in case of failure. The following 'errno' conditions are |
| defined for this function: |
| |
| 'ENOENT' |
| There are no free pseudo-terminal pairs available. |
| |
| *Warning:* Using the 'openpty' function with NAME not set to 'NULL' |
| is *very dangerous* because it provides no protection against |
| overflowing the string NAME. You should use the 'ttyname' function |
| on the file descriptor returned in *SLAVE to find out the file name |
| of the slave pseudo-terminal device instead. |
| |
| -- Function: int forkpty (int *AMASTER, char *NAME, const struct |
| termios *TERMP, const struct winsize *WINP) |
| Preliminary: | MT-Safe locale | AS-Unsafe dlopen plugin heap lock | |
| AC-Unsafe corrupt lock fd mem | *Note POSIX Safety Concepts::. |
| |
| This function is similar to the 'openpty' function, but in |
| addition, forks a new process (*note Creating a Process::) and |
| makes the newly opened slave pseudo-terminal device the controlling |
| terminal (*note Controlling Terminal::) for the child process. |
| |
| If the operation is successful, there are then both parent and |
| child processes and both see 'forkpty' return, but with different |
| values: it returns a value of 0 in the child process and returns |
| the child's process ID in the parent process. |
| |
| If the allocation of a pseudo-terminal pair or the process creation |
| failed, 'forkpty' returns a value of -1 in the parent process. |
| |
| *Warning:* The 'forkpty' function has the same problems with |
| respect to the NAME argument as 'openpty'. |
| |
| |
| File: libc.info, Node: Syslog, Next: Mathematics, Prev: Low-Level Terminal Interface, Up: Top |
| |
| 18 Syslog |
| ********* |
| |
| This chapter describes facilities for issuing and logging messages of |
| system administration interest. This chapter has nothing to do with |
| programs issuing messages to their own users or keeping private logs |
| (One would typically do that with the facilities described in *note I/O |
| on Streams::). |
| |
| Most systems have a facility called "Syslog" that allows programs to |
| submit messages of interest to system administrators and can be |
| configured to pass these messages on in various ways, such as printing |
| on the console, mailing to a particular person, or recording in a log |
| file for future reference. |
| |
| A program uses the facilities in this chapter to submit such |
| messages. |
| |
| * Menu: |
| |
| * Overview of Syslog:: Overview of a system's Syslog facility |
| * Submitting Syslog Messages:: Functions to submit messages to Syslog |
| |
| |
| File: libc.info, Node: Overview of Syslog, Next: Submitting Syslog Messages, Up: Syslog |
| |
| 18.1 Overview of Syslog |
| ======================= |
| |
| System administrators have to deal with lots of different kinds of |
| messages from a plethora of subsystems within each system, and usually |
| lots of systems as well. For example, an FTP server might report every |
| connection it gets. The kernel might report hardware failures on a disk |
| drive. A DNS server might report usage statistics at regular intervals. |
| |
| Some of these messages need to be brought to a system administrator's |
| attention immediately. And it may not be just any system administrator |
| - there may be a particular system administrator who deals with a |
| particular kind of message. Other messages just need to be recorded for |
| future reference if there is a problem. Still others may need to have |
| information extracted from them by an automated process that generates |
| monthly reports. |
| |
| To deal with these messages, most Unix systems have a facility called |
| "Syslog." It is generally based on a daemon called "Syslogd" Syslogd |
| listens for messages on a Unix domain socket named '/dev/log'. Based on |
| classification information in the messages and its configuration file |
| (usually '/etc/syslog.conf'), Syslogd routes them in various ways. Some |
| of the popular routings are: |
| |
| * Write to the system console |
| * Mail to a specific user |
| * Write to a log file |
| * Pass to another daemon |
| * Discard |
| |
| Syslogd can also handle messages from other systems. It listens on |
| the 'syslog' UDP port as well as the local socket for messages. |
| |
| Syslog can handle messages from the kernel itself. But the kernel |
| doesn't write to '/dev/log'; rather, another daemon (sometimes called |
| "Klogd") extracts messages from the kernel and passes them on to Syslog |
| as any other process would (and it properly identifies them as messages |
| from the kernel). |
| |
| Syslog can even handle messages that the kernel issued before Syslogd |
| or Klogd was running. A Linux kernel, for example, stores startup |
| messages in a kernel message ring and they are normally still there when |
| Klogd later starts up. Assuming Syslogd is running by the time Klogd |
| starts, Klogd then passes everything in the message ring to it. |
| |
| In order to classify messages for disposition, Syslog requires any |
| process that submits a message to it to provide two pieces of |
| classification information with it: |
| |
| facility |
| This identifies who submitted the message. There are a small |
| number of facilities defined. The kernel, the mail subsystem, and |
| an FTP server are examples of recognized facilities. For the |
| complete list, *Note syslog; vsyslog::. Keep in mind that these |
| are essentially arbitrary classifications. "Mail subsystem" |
| doesn't have any more meaning than the system administrator gives |
| to it. |
| |
| priority |
| This tells how important the content of the message is. Examples |
| of defined priority values are: debug, informational, warning, |
| critical. For the complete list, see *note syslog; vsyslog::. |
| Except for the fact that the priorities have a defined order, the |
| meaning of each of these priorities is entirely determined by the |
| system administrator. |
| |
| A "facility/priority" is a number that indicates both the facility |
| and the priority. |
| |
| *Warning:* This terminology is not universal. Some people use |
| "level" to refer to the priority and "priority" to refer to the |
| combination of facility and priority. A Linux kernel has a concept of a |
| message "level," which corresponds both to a Syslog priority and to a |
| Syslog facility/priority (It can be both because the facility code for |
| the kernel is zero, and that makes priority and facility/priority the |
| same value). |
| |
| The GNU C Library provides functions to submit messages to Syslog. |
| They do it by writing to the '/dev/log' socket. *Note Submitting Syslog |
| Messages::. |
| |
| The GNU C Library functions only work to submit messages to the |
| Syslog facility on the same system. To submit a message to the Syslog |
| facility on another system, use the socket I/O functions to write a UDP |
| datagram to the 'syslog' UDP port on that system. *Note Sockets::. |
| |
| |
| File: libc.info, Node: Submitting Syslog Messages, Prev: Overview of Syslog, Up: Syslog |
| |
| 18.2 Submitting Syslog Messages |
| =============================== |
| |
| The GNU C Library provides functions to submit messages to the Syslog |
| facility: |
| |
| * Menu: |
| |
| * openlog:: Open connection to Syslog |
| * syslog; vsyslog:: Submit message to Syslog |
| * closelog:: Close connection to Syslog |
| * setlogmask:: Cause certain messages to be ignored |
| * Syslog Example:: Example of all of the above |
| |
| These functions only work to submit messages to the Syslog facility |
| on the same system. To submit a message to the Syslog facility on |
| another system, use the socket I/O functions to write a UDP datagram to |
| the 'syslog' UDP port on that system. *Note Sockets::. |
| |
| |
| File: libc.info, Node: openlog, Next: syslog; vsyslog, Up: Submitting Syslog Messages |
| |
| 18.2.1 openlog |
| -------------- |
| |
| The symbols referred to in this section are declared in the file |
| 'syslog.h'. |
| |
| -- Function: void openlog (const char *IDENT, int OPTION, int FACILITY) |
| Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock fd | *Note |
| POSIX Safety Concepts::. |
| |
| 'openlog' opens or reopens a connection to Syslog in preparation |
| for submitting messages. |
| |
| IDENT is an arbitrary identification string which future 'syslog' |
| invocations will prefix to each message. This is intended to |
| identify the source of the message, and people conventionally set |
| it to the name of the program that will submit the messages. |
| |
| If IDENT is NULL, or if 'openlog' is not called, the default |
| identification string used in Syslog messages will be the program |
| name, taken from argv[0]. |
| |
| Please note that the string pointer IDENT will be retained |
| internally by the Syslog routines. You must not free the memory |
| that IDENT points to. It is also dangerous to pass a reference to |
| an automatic variable since leaving the scope would mean ending the |
| lifetime of the variable. If you want to change the IDENT string, |
| you must call 'openlog' again; overwriting the string pointed to by |
| IDENT is not thread-safe. |
| |
| You can cause the Syslog routines to drop the reference to IDENT |
| and go back to the default string (the program name taken from |
| argv[0]), by calling 'closelog': *Note closelog::. |
| |
| In particular, if you are writing code for a shared library that |
| might get loaded and then unloaded (e.g. a PAM module), and you |
| use 'openlog', you must call 'closelog' before any point where your |
| library might get unloaded, as in this example: |
| |
| #include <syslog.h> |
| |
| void |
| shared_library_function (void) |
| { |
| openlog ("mylibrary", option, priority); |
| |
| syslog (LOG_INFO, "shared library has been invoked"); |
| |
| closelog (); |
| } |
| |
| Without the call to 'closelog', future invocations of 'syslog' by |
| the program using the shared library may crash, if the library gets |
| unloaded and the memory containing the string '"mylibrary"' becomes |
| unmapped. This is a limitation of the BSD syslog interface. |
| |
| 'openlog' may or may not open the '/dev/log' socket, depending on |
| OPTION. If it does, it tries to open it and connect it as a stream |
| socket. If that doesn't work, it tries to open it and connect it |
| as a datagram socket. The socket has the "Close on Exec" |
| attribute, so the kernel will close it if the process performs an |
| exec. |
| |
| You don't have to use 'openlog'. If you call 'syslog' without |
| having called 'openlog', 'syslog' just opens the connection |
| implicitly and uses defaults for the information in IDENT and |
| OPTIONS. |
| |
| OPTIONS is a bit string, with the bits as defined by the following |
| single bit masks: |
| |
| 'LOG_PERROR' |
| If on, 'openlog' sets up the connection so that any 'syslog' |
| on this connection writes its message to the calling process' |
| Standard Error stream in addition to submitting it to Syslog. |
| If off, 'syslog' does not write the message to Standard Error. |
| |
| 'LOG_CONS' |
| If on, 'openlog' sets up the connection so that a 'syslog' on |
| this connection that fails to submit a message to Syslog |
| writes the message instead to system console. If off, |
| 'syslog' does not write to the system console (but of course |
| Syslog may write messages it receives to the console). |
| |
| 'LOG_PID' |
| When on, 'openlog' sets up the connection so that a 'syslog' |
| on this connection inserts the calling process' Process ID |
| (PID) into the message. When off, 'openlog' does not insert |
| the PID. |
| |
| 'LOG_NDELAY' |
| When on, 'openlog' opens and connects the '/dev/log' socket. |
| When off, a future 'syslog' call must open and connect the |
| socket. |
| |
| *Portability note:* In early systems, the sense of this bit |
| was exactly the opposite. |
| |
| 'LOG_ODELAY' |
| This bit does nothing. It exists for backward compatibility. |
| |
| If any other bit in OPTIONS is on, the result is undefined. |
| |
| FACILITY is the default facility code for this connection. A |
| 'syslog' on this connection that specifies default facility causes |
| this facility to be associated with the message. See 'syslog' for |
| possible values. A value of zero means the default default, which |
| is 'LOG_USER'. |
| |
| If a Syslog connection is already open when you call 'openlog', |
| 'openlog' "reopens" the connection. Reopening is like opening |
| except that if you specify zero for the default facility code, the |
| default facility code simply remains unchanged and if you specify |
| LOG_NDELAY and the socket is already open and connected, 'openlog' |
| just leaves it that way. |
| |
| |
| File: libc.info, Node: syslog; vsyslog, Next: closelog, Prev: openlog, Up: Submitting Syslog Messages |
| |
| 18.2.2 syslog, vsyslog |
| ---------------------- |
| |
| The symbols referred to in this section are declared in the file |
| 'syslog.h'. |
| |
| -- Function: void syslog (int FACILITY_PRIORITY, const char *FORMAT, |
| ...) |
| Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock |
| dlopen | AC-Unsafe corrupt lock mem fd | *Note POSIX Safety |
| Concepts::. |
| |
| 'syslog' submits a message to the Syslog facility. It does this by |
| writing to the Unix domain socket '/dev/log'. |
| |
| 'syslog' submits the message with the facility and priority |
| indicated by FACILITY_PRIORITY. The macro 'LOG_MAKEPRI' generates |
| a facility/priority from a facility and a priority, as in the |
| following example: |
| |
| LOG_MAKEPRI(LOG_USER, LOG_WARNING) |
| |
| The possible values for the facility code are (macros): |
| |
| 'LOG_USER' |
| A miscellaneous user process |
| 'LOG_MAIL' |
| Mail |
| 'LOG_DAEMON' |
| A miscellaneous system daemon |
| 'LOG_AUTH' |
| Security (authorization) |
| 'LOG_SYSLOG' |
| Syslog |
| 'LOG_LPR' |
| Central printer |
| 'LOG_NEWS' |
| Network news (e.g. Usenet) |
| 'LOG_UUCP' |
| UUCP |
| 'LOG_CRON' |
| Cron and At |
| 'LOG_AUTHPRIV' |
| Private security (authorization) |
| 'LOG_FTP' |
| Ftp server |
| 'LOG_LOCAL0' |
| Locally defined |
| 'LOG_LOCAL1' |
| Locally defined |
| 'LOG_LOCAL2' |
| Locally defined |
| 'LOG_LOCAL3' |
| Locally defined |
| 'LOG_LOCAL4' |
| Locally defined |
| 'LOG_LOCAL5' |
| Locally defined |
| 'LOG_LOCAL6' |
| Locally defined |
| 'LOG_LOCAL7' |
| Locally defined |
| |
| Results are undefined if the facility code is anything else. |
| |
| *NB:* 'syslog' recognizes one other facility code: that of the |
| kernel. But you can't specify that facility code with these |
| functions. If you try, it looks the same to 'syslog' as if you are |
| requesting the default facility. But you wouldn't want to anyway, |
| because any program that uses the GNU C Library is not the kernel. |
| |
| You can use just a priority code as FACILITY_PRIORITY. In that |
| case, 'syslog' assumes the default facility established when the |
| Syslog connection was opened. *Note Syslog Example::. |
| |
| The possible values for the priority code are (macros): |
| |
| 'LOG_EMERG' |
| The message says the system is unusable. |
| 'LOG_ALERT' |
| Action on the message must be taken immediately. |
| 'LOG_CRIT' |
| The message states a critical condition. |
| 'LOG_ERR' |
| The message describes an error. |
| 'LOG_WARNING' |
| The message is a warning. |
| 'LOG_NOTICE' |
| The message describes a normal but important event. |
| 'LOG_INFO' |
| The message is purely informational. |
| 'LOG_DEBUG' |
| The message is only for debugging purposes. |
| |
| Results are undefined if the priority code is anything else. |
| |
| If the process does not presently have a Syslog connection open |
| (i.e., it did not call 'openlog'), 'syslog' implicitly opens the |
| connection the same as 'openlog' would, with the following defaults |
| for information that would otherwise be included in an 'openlog' |
| call: The default identification string is the program name. The |
| default default facility is 'LOG_USER'. The default for all the |
| connection options in OPTIONS is as if those bits were off. |
| 'syslog' leaves the Syslog connection open. |
| |
| If the '/dev/log' socket is not open and connected, 'syslog' opens |
| and connects it, the same as 'openlog' with the 'LOG_NDELAY' option |
| would. |
| |
| 'syslog' leaves '/dev/log' open and connected unless its attempt to |
| send the message failed, in which case 'syslog' closes it (with the |
| hope that a future implicit open will restore the Syslog connection |
| to a usable state). |
| |
| Example: |
| |
| |
| #include <syslog.h> |
| syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR), |
| "Unable to make network connection to %s. Error=%m", host); |
| |
| |
| -- Function: void vsyslog (int FACILITY_PRIORITY, const char *FORMAT, |
| va_list ARGLIST) |
| Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock |
| dlopen | AC-Unsafe corrupt lock mem fd | *Note POSIX Safety |
| Concepts::. |
| |
| This is functionally identical to 'syslog', with the BSD style |
| variable length argument. |
| |
| |
| File: libc.info, Node: closelog, Next: setlogmask, Prev: syslog; vsyslog, Up: Submitting Syslog Messages |
| |
| 18.2.3 closelog |
| --------------- |
| |
| The symbols referred to in this section are declared in the file |
| 'syslog.h'. |
| |
| -- Function: void closelog (void) |
| Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock fd | *Note |
| POSIX Safety Concepts::. |
| |
| 'closelog' closes the current Syslog connection, if there is one. |
| This includes closing the '/dev/log' socket, if it is open. |
| 'closelog' also sets the identification string for Syslog messages |
| back to the default, if 'openlog' was called with a non-NULL |
| argument to IDENT. The default identification string is the |
| program name taken from argv[0]. |
| |
| If you are writing shared library code that uses 'openlog' to |
| generate custom syslog output, you should use 'closelog' to drop |
| the GNU C Library's internal reference to the IDENT pointer when |
| you are done. Please read the section on 'openlog' for more |
| information: *Note openlog::. |
| |
| 'closelog' does not flush any buffers. You do not have to call |
| 'closelog' before re-opening a Syslog connection with 'openlog'. |
| Syslog connections are automatically closed on exec or exit. |
| |
| |
| File: libc.info, Node: setlogmask, Next: Syslog Example, Prev: closelog, Up: Submitting Syslog Messages |
| |
| 18.2.4 setlogmask |
| ----------------- |
| |
| The symbols referred to in this section are declared in the file |
| 'syslog.h'. |
| |
| -- Function: int setlogmask (int MASK) |
| Preliminary: | MT-Unsafe race:LogMask | AS-Unsafe | AC-Safe | *Note |
| POSIX Safety Concepts::. |
| |
| 'setlogmask' sets a mask (the "logmask") that determines which |
| future 'syslog' calls shall be ignored. If a program has not |
| called 'setlogmask', 'syslog' doesn't ignore any calls. You can |
| use 'setlogmask' to specify that messages of particular priorities |
| shall be ignored in the future. |
| |
| A 'setlogmask' call overrides any previous 'setlogmask' call. |
| |
| Note that the logmask exists entirely independently of opening and |
| closing of Syslog connections. |
| |
| Setting the logmask has a similar effect to, but is not the same |
| as, configuring Syslog. The Syslog configuration may cause Syslog |
| to discard certain messages it receives, but the logmask causes |
| certain messages never to get submitted to Syslog in the first |
| place. |
| |
| MASK is a bit string with one bit corresponding to each of the |
| possible message priorities. If the bit is on, 'syslog' handles |
| messages of that priority normally. If it is off, 'syslog' |
| discards messages of that priority. Use the message priority |
| macros described in *note syslog; vsyslog:: and the 'LOG_MASK' to |
| construct an appropriate MASK value, as in this example: |
| |
| LOG_MASK(LOG_EMERG) | LOG_MASK(LOG_ERROR) |
| |
| or |
| |
| ~(LOG_MASK(LOG_INFO)) |
| |
| There is also a 'LOG_UPTO' macro, which generates a mask with the |
| bits on for a certain priority and all priorities above it: |
| |
| LOG_UPTO(LOG_ERROR) |
| |
| The unfortunate naming of the macro is due to the fact that |
| internally, higher numbers are used for lower message priorities. |
| |
| |
| File: libc.info, Node: Syslog Example, Prev: setlogmask, Up: Submitting Syslog Messages |
| |
| 18.2.5 Syslog Example |
| --------------------- |
| |
| Here is an example of 'openlog', 'syslog', and 'closelog': |
| |
| This example sets the logmask so that debug and informational |
| messages get discarded without ever reaching Syslog. So the second |
| 'syslog' in the example does nothing. |
| |
| #include <syslog.h> |
| |
| setlogmask (LOG_UPTO (LOG_NOTICE)); |
| |
| openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); |
| |
| syslog (LOG_NOTICE, "Program started by User %d", getuid ()); |
| syslog (LOG_INFO, "A tree falls in a forest"); |
| |
| closelog (); |
| |
| |
| |
| File: libc.info, Node: Mathematics, Next: Arithmetic, Prev: Syslog, Up: Top |
| |
| 19 Mathematics |
| ************** |
| |
| This chapter contains information about functions for performing |
| mathematical computations, such as trigonometric functions. Most of |
| these functions have prototypes declared in the header file 'math.h'. |
| The complex-valued functions are defined in 'complex.h'. |
| |
| All mathematical functions which take a floating-point argument have |
| three variants, one each for 'double', 'float', and 'long double' |
| arguments. The 'double' versions are mostly defined in ISO C89. The |
| 'float' and 'long double' versions are from the numeric extensions to C |
| included in ISO C99. |
| |
| Which of the three versions of a function should be used depends on |
| the situation. For most calculations, the 'float' functions are the |
| fastest. On the other hand, the 'long double' functions have the |
| highest precision. 'double' is somewhere in between. It is usually |
| wise to pick the narrowest type that can accommodate your data. Not all |
| machines have a distinct 'long double' type; it may be the same as |
| 'double'. |
| |
| * Menu: |
| |
| * Mathematical Constants:: Precise numeric values for often-used |
| constants. |
| * Trig Functions:: Sine, cosine, tangent, and friends. |
| * Inverse Trig Functions:: Arcsine, arccosine, etc. |
| * Exponents and Logarithms:: Also pow and sqrt. |
| * Hyperbolic Functions:: sinh, cosh, tanh, etc. |
| * Special Functions:: Bessel, gamma, erf. |
| * Errors in Math Functions:: Known Maximum Errors in Math Functions. |
| * Pseudo-Random Numbers:: Functions for generating pseudo-random |
| numbers. |
| * FP Function Optimizations:: Fast code or small code. |
| |
| |
| File: libc.info, Node: Mathematical Constants, Next: Trig Functions, Up: Mathematics |
| |
| 19.1 Predefined Mathematical Constants |
| ====================================== |
| |
| The header 'math.h' defines several useful mathematical constants. All |
| values are defined as preprocessor macros starting with 'M_'. The |
| values provided are: |
| |
| 'M_E' |
| The base of natural logarithms. |
| 'M_LOG2E' |
| The logarithm to base '2' of 'M_E'. |
| 'M_LOG10E' |
| The logarithm to base '10' of 'M_E'. |
| 'M_LN2' |
| The natural logarithm of '2'. |
| 'M_LN10' |
| The natural logarithm of '10'. |
| 'M_PI' |
| Pi, the ratio of a circle's circumference to its diameter. |
| 'M_PI_2' |
| Pi divided by two. |
| 'M_PI_4' |
| Pi divided by four. |
| 'M_1_PI' |
| The reciprocal of pi (1/pi) |
| 'M_2_PI' |
| Two times the reciprocal of pi. |
| 'M_2_SQRTPI' |
| Two times the reciprocal of the square root of pi. |
| 'M_SQRT2' |
| The square root of two. |
| 'M_SQRT1_2' |
| The reciprocal of the square root of two (also the square root of |
| 1/2). |
| |
| These constants come from the Unix98 standard and were also available |
| in 4.4BSD; therefore they are only defined if '_BSD_SOURCE' or |
| '_XOPEN_SOURCE=500', or a more general feature select macro, is defined. |
| The default set of features includes these constants. *Note Feature |
| Test Macros::. |
| |
| All values are of type 'double'. As an extension, the GNU C Library |
| also defines these constants with type 'long double'. The 'long double' |
| macros have a lowercase 'l' appended to their names: 'M_El', 'M_PIl', |
| and so forth. These are only available if '_GNU_SOURCE' is defined. |
| |
| _Note:_ Some programs use a constant named 'PI' which has the same |
| value as 'M_PI'. This constant is not standard; it may have appeared in |
| some old AT&T headers, and is mentioned in Stroustrup's book on C++. It |
| infringes on the user's name space, so the GNU C Library does not define |
| it. Fixing programs written to expect it is simple: replace 'PI' with |
| 'M_PI' throughout, or put '-DPI=M_PI' on the compiler command line. |
| |
| |
| File: libc.info, Node: Trig Functions, Next: Inverse Trig Functions, Prev: Mathematical Constants, Up: Mathematics |
| |
| 19.2 Trigonometric Functions |
| ============================ |
| |
| These are the familiar 'sin', 'cos', and 'tan' functions. The arguments |
| to all of these functions are in units of radians; recall that pi |
| radians equals 180 degrees. |
| |
| The math library normally defines 'M_PI' to a 'double' approximation |
| of pi. If strict ISO and/or POSIX compliance are requested this |
| constant is not defined, but you can easily define it yourself: |
| |
| #define M_PI 3.14159265358979323846264338327 |
| |
| You can also compute the value of pi with the expression 'acos (-1.0)'. |
| |
| -- Function: double sin (double X) |
| -- Function: float sinf (float X) |
| -- Function: long double sinl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the sine of X, where X is given in radians. |
| The return value is in the range '-1' to '1'. |
| |
| -- Function: double cos (double X) |
| -- Function: float cosf (float X) |
| -- Function: long double cosl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the cosine of X, where X is given in |
| radians. The return value is in the range '-1' to '1'. |
| |
| -- Function: double tan (double X) |
| -- Function: float tanf (float X) |
| -- Function: long double tanl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the tangent of X, where X is given in |
| radians. |
| |
| Mathematically, the tangent function has singularities at odd |
| multiples of pi/2. If the argument X is too close to one of these |
| singularities, 'tan' will signal overflow. |
| |
| In many applications where 'sin' and 'cos' are used, the sine and |
| cosine of the same angle are needed at the same time. It is more |
| efficient to compute them simultaneously, so the library provides a |
| function to do that. |
| |
| -- Function: void sincos (double X, double *SINX, double *COSX) |
| -- Function: void sincosf (float X, float *SINX, float *COSX) |
| -- Function: void sincosl (long double X, long double *SINX, long |
| double *COSX) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the sine of X in '*SINX' and the cosine of X |
| in '*COS', where X is given in radians. Both values, '*SINX' and |
| '*COSX', are in the range of '-1' to '1'. |
| |
| This function is a GNU extension. Portable programs should be |
| prepared to cope with its absence. |
| |
| ISO C99 defines variants of the trig functions which work on complex |
| numbers. The GNU C Library provides these functions, but they are only |
| useful if your compiler supports the new complex types defined by the |
| standard. (As of this writing GCC supports complex numbers, but there |
| are bugs in the implementation.) |
| |
| -- Function: complex double csin (complex double Z) |
| -- Function: complex float csinf (complex float Z) |
| -- Function: complex long double csinl (complex long double Z) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the complex sine of Z. The mathematical |
| definition of the complex sine is |
| |
| sin (z) = 1/(2*i) * (exp (z*i) - exp (-z*i)). |
| |
| -- Function: complex double ccos (complex double Z) |
| -- Function: complex float ccosf (complex float Z) |
| -- Function: complex long double ccosl (complex long double Z) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the complex cosine of Z. The mathematical |
| definition of the complex cosine is |
| |
| cos (z) = 1/2 * (exp (z*i) + exp (-z*i)) |
| |
| -- Function: complex double ctan (complex double Z) |
| -- Function: complex float ctanf (complex float Z) |
| -- Function: complex long double ctanl (complex long double Z) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions return the complex tangent of Z. The mathematical |
| definition of the complex tangent is |
| |
| tan (z) = -i * (exp (z*i) - exp (-z*i)) / (exp (z*i) + exp (-z*i)) |
| |
| The complex tangent has poles at pi/2 + 2n, where n is an integer. |
| 'ctan' may signal overflow if Z is too close to a pole. |
| |
| |
| File: libc.info, Node: Inverse Trig Functions, Next: Exponents and Logarithms, Prev: Trig Functions, Up: Mathematics |
| |
| 19.3 Inverse Trigonometric Functions |
| ==================================== |
| |
| These are the usual arc sine, arc cosine and arc tangent functions, |
| which are the inverses of the sine, cosine and tangent functions |
| respectively. |
| |
| -- Function: double asin (double X) |
| -- Function: float asinf (float X) |
| -- Function: long double asinl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions compute the arc sine of X--that is, the value whose |
| sine is X. The value is in units of radians. Mathematically, |
| there are infinitely many such values; the one actually returned is |
| the one between '-pi/2' and 'pi/2' (inclusive). |
| |
| The arc sine function is defined mathematically only over the |
| domain '-1' to '1'. If X is outside the domain, 'asin' signals a |
| domain error. |
| |
| -- Function: double acos (double X) |
| -- Function: float acosf (float X) |
| -- Function: long double acosl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions compute the arc cosine of X--that is, the value |
| whose cosine is X. The value is in units of radians. |
| Mathematically, there are infinitely many such values; the one |
| actually returned is the one between '0' and 'pi' (inclusive). |
| |
| The arc cosine function is defined mathematically only over the |
| domain '-1' to '1'. If X is outside the domain, 'acos' signals a |
| domain error. |
| |
| -- Function: double atan (double X) |
| -- Function: float atanf (float X) |
| -- Function: long double atanl (long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| These functions compute the arc tangent of X--that is, the value |
| whose tangent is X. The value is in units of radians. |
| Mathematically, there are infinitely many such values; the one |
| actually returned is the one between '-pi/2' and 'pi/2' |
| (inclusive). |
| |
| -- Function: double atan2 (double Y, double X) |
| -- Function: float atan2f (float Y, float X) |
| -- Function: long double atan2l (long double Y, long double X) |
| Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety |
| Concepts::. |
| |
| This function computes the arc tangent of Y/X, but the signs of |
| both arguments are used to determine the quadrant of the result, |
| and X is permitted to be zero. The return value is given in |
| radians and is in the range '-pi' to 'pi', inclusive. |
| |
| If X and Y are coordinates of a point in the plane, 'atan2' returns |
| the signed angle between the line from the origin to that point and |
| the x-axis. Thus, 'atan2' is useful for converting Cartesian |
|