Table of Contents
The Linux Programming Interface - A Linux and UNIX System Programming Handbook Index
Linux: Linux Fundamentals, Linux Inventor: Linus Torvalds says “ Linux just sucks less.”, Linux Best Practices - Linux Anti-Patterns, Linux kernel, Linux commands-Linux Shells-Linux CLI-GNU-Linux GUI-X11, Linux DevOps-Linux development-Linux system programming-Bash-zsh-Linux API, Linux package managers, Linux configuration management (Ansible on Linux, Chef on Linux, Puppet on Linux, PowerShell on Linux), Linux Distros (RHEL-Rocky Linux-CentOS (CentOS Stream)-Oracle Linux-Fedora, Ubuntu-Debian-Linux Mint-Raspberry Pi OS-Kali Linux-Tails, openSUSE - SUSE Linux Enterprise Server (SLES), Arch Linux-Manjaro Linux, Alpine Linux-BusyBox - Slackware - Android-Chrome OS); UNIX-UNIX Distros (FreeBSD-OpenBSD, BSD, macOS), Linux networking, Linux storage, Linux secrets, Linux security (Linux IAM-LDAP-Linux Firewall-Linux Proxy), Linux docs, Linux GitHub, Linux Containers, Linux VM, Linux on AWS, Linux on Azure, Linux on GCP, Linux on Windows (WSL), Linux on IBM, Linux on Mainframe (Linux on IBM Z mainframe - Linux for System z - IBM LinuxONE), Embedded Linux, Linus IoT-Linux on Raspberry Pi, LinuxOps-Linux sysadmin, systemd-userland-kernel space-POSIX-SUS-Linux filesystem-Linux architecture, Linux books-UNIX books, Linux courses, Linux Foundation, Linux history, Linux philosophy, Linux adoption, Linux glossary, Linux topics (navbar_linux and navbar_unix - see also navbar_fedora, navbar_rhel, navbar_centos, navbar_debian, navbar_ubuntu, navbar_linux_mint, navbar_freebsd, navbar_opensuse, navbar_manjaro, navbar_kali_linux, navbar_nixos, navbar_alpine_linux, navbar_tails_linux, navbar_slackware, navbar_rocky_linux, navbar_arch_linux, navbar_oracle_linux)
Systems programming: Linux systems programming, UNIX systems programming, Windows system programming, macOS system programming. Linux Programming Interface - A Linux and UNIX System Programming Handbook, Advanced Programming in the UNIX Environment, Mainframe systems programming, Systems programming languages (C systems programming, C++ systems programming, Rust systems programming, Awesome systems programming (navbar_systemprogramming)
Fair Use Source: B004OEJMZM-TLPI2010
The following conventions are used in the index:
- Library function and system call prototypes are indexed with a subentry labeled prototype. Normally, you’ll find the main discussion of a function or system call in the same location as the prototype.
- Definitions of C structures are indexed with subentries labeled definition. This is where you’ll normally find the main discussion of a structure.
- Implementations of functions developed in the text are indexed with a subentry labeled code of implementation.
- Instructional or otherwise interesting examples of the use of functions, variables, signals, structures, macros, constants, and files in example programs are indexed with subentries labeled example of use. Not all instances of the use of each interface are indexed; instead, just a few examples that provide useful guidance are indexed.
- #! (interpreter script), 572
- / (root directory), 27
- /dev directory, 252
- diagram, 775
- used with mmap(), 1034
- diagram, 775
- /proc file system, 42, 223–228
- diagram, 227
- <errno.h> header file, 49
- __WALL constant, 610
- __WCLONE constant, 609
- _exit(), 32, 426, 514, 531–532, 692
- prototype, 531
- _Exit(), 426
- _fini(), 873
- _init(), 873
- _longjmp(), 429
- _PC_VDISABLE constant, 1296
- _SC_ASYNCHRONOUS_IO constant, 221
- _SC_CLK_TCK constant, 206, 214
- _SC_THREADS constant, 221
- _SC_XOPEN_UNIX constant, 221
- _setjmp(), 429
- _XOPEN_UNIX constant, 221
#
- 2MSL, 1274
- 3BSD, 4
- 4.2BSD, 4, 155, 342, 390, 443, 476, 776, 1149, 1180
- 4.3BSD, 4
- 4.4BSD, 4, 17, 1442
- 386/BSD, 7
INDEX The Linux Programming Interface - ! Michael Kerrisk.txt
A
- ABI, 118, 867
- abort(), 390, 426, 433–434, 446
- prototype, 433
- accept(), 426, 673, 801, 1152, 1157–1158
- diagram, 1156
- interrupted by signal handler, 444
- prototype, 1157
- accept4(), 1158
- interrupted by signal handler, 444
- diagram, 320
- minimal ACL, 321
- permission set, 320
- tag qualifier, 320, 321, 323, 332
- access(), 298–299, 345, 426
- prototype, 299
- acct structure, 593–594
- definition, 593
- acct(), 345, 592–593, 801
- prototype, 592
- acct_on.c, 592
- acct_v3 structure, 597–598
- definition, 598
- acct_v3_view.c, 598
- acct_view.c, 596
- acl_add_perm(), 332
- diagram, 330
- acl_clear_perms(), 332
- diagram, 330
- diagram, 330
- diagram, 330
- diagram, 330
- acl_dup(), 334
- diagram, 330
- diagram, 330
- diagram, 330
- diagram, 330
- acl_get_perm(), 332
- diagram, 330
- acl_get_permset(), 332
- diagram, 330
- acl_get_qualifier(), 332
- diagram, 330
- diagram, 330
- diagram, 330
- diagram, 330
- acl_set_permset(), 332
- diagram, 330
- acl_set_qualifier(), 332
- diagram, 330
- diagram, 330
- diagram, 330
- diagram, 330
- diagram, 330
- acl_valid(), 334
- address-space randomization, 793
- definition, 1214
- adjtime(), 205, 801
- prototype, 205
- adjtimex(), 205, 801
- Aho, A.V., 1437
- AI_CANONNAME constant, 1214, 1216
- AI_NUMERICHOST constant, 1216
- AI_NUMERICSERV constant, 1216
- AIO (asynchronous I/O), 613, 1327, 1347
- aio_error(), 426
- aio_return(), 426
- aio_suspend(), 426, 673
- AIX, 5
- alarm(), 390, 426, 484–485, 486, 488, 614
- prototype, 484
- Albitz, P., 1437
- Allman, M., 1194
- alloca(), 150–151
- prototype, 150
- on the heap, 140–144, 147–150
- on the stack, 150–151
- Anley (2007), 792, 795, 1437
- Anley, C., 1437
- anon_mmap.c, 1036
- private, 1019, 1035
- shared, 1019, 1035
- Anzinger, G., xli
- archive, 834
- diagram, 123
- asctime(), 16, 191, 657
- diagram, 188
- prototype, 191
- asctime_r(), 191, 658
- ASN.1, 1200
- asynchronous I/O, POSIX, 613, 1327, 1347
- AT_EACCESS constant, 365
- AT_SYMLINK_FOLLOW constant, 365, 366
- atexit(), 532, 534–535, 866
- prototype, 534
- atomic_append.c, 1425
- atomicity, 90–92, 465
- automatic variables, 116, 122
- A/UX, 5
- awk program, 574, 1437
INDEX The Linux Programming Interface - ! Michael Kerrisk.txt
B
- Bach, M., 1437
- background process group, 700, 708, 714
- diagram, 701, 717
- bad_longjmp.c, 1426
- bad_symlink.c, 1428, 1429
- basename(), 370–372, 657
- prototype, 370
- baud, 1316
- bcopy(), 1166
- Becher, S., xli
- become_daemon.c, 770
- become_daemon.h, 770
- becomeDaemon(), 769–771
- code of implementation, 770–771
- prototype, 769
- Benedyczak, K., xli
- Berkeley Software Distribution, 4, 7–8
- diagram, 717
- Bhattiprolu (2008), 608, 1437
- Bhattiprolu, S., 1437
- Biddle, R.L., xlii
- Biederman, E.W., 1437
- big-endian byte order, 1198
- diagram, 1198
- binary semaphores, 988–991
- binary_sems.c, 990
- binary_sems.h, 989
- bind mount, 272–274
- bind(), 345, 426, 1152, 1153–1154, 1155
- diagram, 1156, 1160
- prototype, 1153
- Bishop, M., 795, 1437
- Black, D., 1194
- block device, 252, 282
- Borisov, N., 1438
- Borman, D., 1194
- Bostic, K., 1442
- Bound, J., 1194
- Bourne, S., 25
- Bourne shell (sh), 3, 25, 154
- Bovet, D.P., 1438
- Braden, R., 1194
- Brahneborg, D., xli
- Brecht, T., 1439
- brk(), 140
- prototype, 140
- RLIMIT_AS resource limit and, 760
- Brouwer, A.E., xli
- BS0 constant, 1302
- BS1 constant, 1302
- BSD, 4, 7–8
- BSDi, 8
- bss, 116
- Btrfs file system, 261
- buffer cache, 233, 234
- buffer overrun, 792
- diagram, 244
- in the kernel, 233–236, 239–243
- overview, 243–244
- in the stdio library, 237–239, 249
- BUS_ADRALN constant, 441
- BUS_ADRERR constant, 441
- BUS_MCEERR_AO constant, 441
- BUS_MCEERR_AR constant, 441
- BUS_OBJERR constant, 441
- busy file system, 270
- Butenhof, D.R., xxxviii, 1438
- separating messages in, 910–911
- diagram, 911
- bzero(), 1166
C
- C library, 47–48, 1442
- C programming language, 2, 1440, 1444
- C89 standard, 11, 17
- C99 standard, 11, 17
- standards, 10–11
- C shell (csh), 4, 25
- C89, 11, 17
- C99, 11, 17
- calendar time, 185–187
- changing, 204–205
- calendar_time.c, 191
- calloc(), 147–148
- prototype, 148
- Cao, M., 1441
- CAP_DAC_OVERRIDE capability, 287, 299, 800, 807
- CAP_FOWNER capability, 76, 168, 287, 288, 300, 303, 308, 800, 807
- cap_free(), 808
- CAP_FSETID capability, 304, 800, 807, 1432
- cap_get_proc(), 807
- CAP_KILL capability, 402, 800
- CAP_MAC_ADMIN capability, 800
- CAP_MAC_OVERRIDE capability, 800, 807
- CAP_MKNOD capability, 252, 368, 800, 807
- CAP_SET constant, 807
- cap_set_flag(), 807
- cap_set_proc(), 808
- CAP_SETFCAP capability, 799, 800
- CAP_SETGID capability, 172, 800, 1285
- CAP_SETPCAP capability, 801, 806, 807, 812, 814, 815, 816
- CAP_SYS_ADMIN capability, 254, 262, 312, 607, 763, 801, 929, 1285
- CAP_SYS_MODULE capability, 801, 815
- CAP_SYS_NICE capability, 736, 743, 747, 750, 801
- CAP_SYS_PACCT capability, 592, 801
- CAP_SYS_RAWIO capability, 255, 801
- cap_t data type, 807
- capability
- capget(), 807
- capset(), 807
- Card, R., 255
- catch_rtsigs.c, 462
- catch_SIGHUP.c, 710
- CBAUD constant, 1302, 1317
- CBAUDEX constant, 1302, 1317
- cc_t data type, 64, 1292
- Cesati, M., 1438
- cfgetispeed(), 426, 1316–1317
- prototype, 1316
- cfgetospeed(), 426, 1316–1317
- prototype, 1316
- cfsetispeed(), 426, 1316–1317
- prototype, 1316
- cfsetospeed(), 426, 1316–1317
- prototype, 1316
- Chandra, C., xlii
- chattr command, 305
- chdir(), 345, 364–365, 426, 604, 607
- prototype, 364
- Chen (2002), 795, 1438
- Chen, H., 1438
- chiflag.c, 1428
- child process, 31, 513, 515
- waiting on, 541–553
- chmod(), 286, 303–304, 325, 345, 426, 800
- prototype, 303
- Choffnes, D.R., 1438
- chown(), 221, 286, 291–293, 345, 426, 800
- prototype, 292
- chroot jail, 273, 367, 789
- chroot(), 345, 367–368, 580, 604, 607, 801
- prototype, 367
- Church, A.R., xli
- Church, D.E., xlii
- Church, D.E.M., xlii
- Chuvakin, A., 1442
- CIBAUD constant, 1302
- Clare, G.W., xxxix
- CLD_KILLED constant, 441, 551
- CLD_TRAPPED constant, 441
- clearenv(), 129–130
- prototype, 129
- client, 40
- clock(), 207–208, 210
- prototype, 207
- prototype, 493
- clock_getres(), 491
- prototype, 491
- prototype, 491
- interrupted by signal handler, 444
- prototype, 493
- prototype, 492
- clone child, 609
- clone(), 598–609, 801, 987
- prototype, 599
- speed, 610–612
- CLONE_FS constant, 600, 604, 607
- CLONE_IO constant, 600, 608
- CLONE_NEWNS constant, 261, 600, 607, 801
- CLONE_NEWPID constant, 600, 608
- CLONE_NEWUTC constant, 608
- CLONE_NEWUTS constant, 600
- CLONE_PID constant, 600, 608
- CLONE_SETTLS constant, 600, 607
- CLONE_SIGHAND constant, 600, 604, 605
- CLONE_SYSVSEM constant, 600, 607, 987
- CLONE_VM constant, 600, 604
- clone2(), 599
- close(), 70, 80–81, 426
- prototype, 81
- prototype, 355
- prototype, 780
- code of implementation, 57
- prototype, 54
- CMSPAR constant, 1302
- Columbus UNIX, 922
- Comer, D.E., 1438
- command-line arguments, 31, 122–124, 225
- comp_t data type, 64, 593, 594, 598
- compressed clock tick, 594
- concurrent server, 912, 957, 1239–1240, 1243–1247
- association with mutex, 646
- destroying, 652
- initializing, 651–652
- signaling, 643–644
- statically allocated, 643
- waiting on, 643–645
- confstr(), 48, 588, 694
- connect(), 426, 673, 1152, 1158
- diagram, 1156
- interrupted by signal handler, 444
- prototype, 1158
- container, 608
- controlling process, 39, 533, 700, 706–708, 712
- diagram, 701
- obtaining name of, 707
- opening, 707
- Cook, L., xlii
- copy.c, 71
- diagram, 521
- Corbet, J., 1438
- circumstances when not produced, 448–449
- naming, 449–450
- resource limit on size of, 760
- Cox, J., 1440
- CPU affinity, 748
- CPU_CLR(), 749
- prototype, 749
- CPU_ISSET(), 749
- prototype, 749
- CPU_SET(), 749
- prototype, 749
- CPU_ZERO(), 749
- prototype, 749
- CR0 constant, 1302
- CR1 constant, 1302
- CR2 constant, 1302
- CR3 constant, 1302
- CRDLY constant, 1302
- creat(), 78–79, 286, 345, 426, 673
- prototype, 78
- code of implementation, 1144
- critical section, 631, 635
- Crosby (2003), 794, 1438
- Crosby, S.A., 1438
- CRTSCTS constant, 1303
- crypt(), 162–163, 657
- prototype, 163
- crypt_r(), 658
- CS5 constant, 1303
- CS6 constant, 1303
- CS7 constant, 1303
- CS8 constant, 1303
- csh (C shell), 25
- prototype, 707
- ctime(), 16, 188–189, 198, 657
- diagram, 188
- prototype, 188
- ctime_r(), 189, 658
- curr_time.c, 194
- Currie, A.L., xlii
- currTime(), 193
- code of implementation, 194–195
- prototype, 193
- Cvetkovic, D., xli
D
D
- creating, 768–771
- reinitializing, 391, 772–775
- daemon(), 770
- da Silva, D., 1444
- resource limit on size of, 761
- diagram, 1181
- Davidson, F., xli
- Davidson, S., xli
- dbm_clearerr(), 657
- dbm_close(), 657
- dbm_delete(), 657
- dbm_error(), 657
- dbm_fetch(), 657
- dbm_nextkey(), 657
- dbm_open(), 657
- dbm_store(), 657
- mutex, 639
- Dean, D., 1438
- Deering, S., 1194
- Deitel, H.M., 1438
- Deitel, P.J., 1438
- demo_clone.c, 603
- demo_inotify.c, 382
- demo_sched_fifo.c, 1432
- demo_SIGFPE.c, 452
- demo_sigio.c, 1348
- demo_SIGWINCH.c, 1320
- detached_attrib.c, 628
- dev_t data type, 64, 280, 281
- devfs file system, 253
- device, 252–253
- major ID, 253, 281
- minor ID, 253, 281
- de Weerd, P., xlii
- Diamond, D., 1444
- diet libc, 47
- Dijkstra, E.W., 989, 1438
- Dilger, A., 1441
- directory, 27, 282, 339–342
- creating, 350–351
- diagram, 340
- opening, 76
- permissions, 297
- reading contents of, 352–357
- removing, 351, 352
- sticky permission bit, 300
- synchronous updates, 264, 265, 267, 305, 307
- closed on process termination, 533
- file descriptor associated with, 355
- dirent structure, 353
- definition, 353
- dirfd(), 15, 355
- prototype, 355
- prototype, 370
- disc_SIGHUP.c, 712
- discretionary locking, 1138
- diagram, 255
- disk quotas, 794, 801
- display_env.c, 127
- Dl_info structure, 866
- definition, 866
- dladdr(), 866
- prototype, 866
- dlclose(), 860, 861, 866, 876
- prototype, 866
- dlerror(), 657, 862, 863
- prototype, 862
- dlopen(), 860–862
- prototype, 860
- dlsym(), 862–864
- prototype, 863
- dlvsym(), 863
- domain name, 1210
- iterative resolution, 1211
- recursive resolution, 1211
- Domaigné, L., xxxix
- domain name, 1210
- domainname command, 230
- Döring, G., xxxix
- DragonFly BSD, 8
- drand48(), 657
- Drepper, U., 47, 689, 1438, 1439
- DST, 187
- DT_DIR constant, 353
- DT_LNK constant, 353
- DT_NEEDED tag (ELF), 839
- DT_REG constant, 353
- dumb terminal, 714
- Dunchak, M., xliii
- dup(), 97, 426, 1425
- prototype, 97
- dup2(), 97, 426, 899, 900, 1426
- prototype, 97
- dup3(), 98
- prototype, 98
- Dupont, K., xli
- dynamically allocated storage, 116
- dynload.c, 865
E
- E2BIG error, 565, 943, 991
- EACCES error, 77, 312, 564, 702, 928, 952, 1031, 1127
- eaccess(), 300
- EAGAIN error, 57, 103, 270, 379, 460, 471, 473, 509, 761, 763, 764, 917, 918, 941, 979, 980, 1065, 1073, 1075, 1095, 1127, 1139, 1259, 1260, 1330, 1347, 1367
- EAI_AGAIN constant, 1217
- EAI_FAIL constant, 1217
- EAI_FAMILY constant, 1217
- EBADF error, 97, 762, 1126, 1334, 1344, 1345
- Ebner, R., xlii
- EBUSY error, 270, 637, 1078, 1396
- ECHO constant, 1303, 1304
- ECHOCTL constant, 1303, 1304
- ECHOE constant, 1303, 1304
- ECHOK constant, 1303, 1304
- ECHOKE constant, 1303, 1304
- ECHONL constant, 1296, 1303
- ECHOPRT constant, 1303
- ecvt(), 656, 657
- diagram, 119
- preventing file-descriptor starvation, 1367
- EEXIST error, 76, 315, 345, 349, 350, 924, 932, 938, 969, 999, 1059, 1109, 1357
- EFBIG error, 761
- EIDRM error, 933, 947, 971, 979
- EINTR error, 418, 442, 443, 486, 489, 941, 944, 979, 1095, 1334, 1339
- EINVAL error, 179, 216, 246, 247, 349, 381, 750, 762, 933, 950, 952, 969, 991, 999, 1000, 1014
- EIO error, 709, 718, 727, 730, 764, 1382, 1388, 1389, 1396
- EISDIR error, 78, 346, 349
- elapsed time, 185
- ELF interpreter, 565
- Elliston, B., 1444
- ename.c.inc, 58
- encapsulation, in networking protocols, 1182
- encrypt(), 657
- end variable, 118
- diagram, 119
- endgrent(), 161, 657
- endpwent(), 160–161, 657
- prototype, 161
- endspent(), 161
- prototype, 161
- endutxent(), 657, 821
- prototype, 821
- ENOENT error, 78, 158, 346, 349, 565, 823, 924, 932, 1059, 1357, 1396, 1429
- ENOMEM error, 760, 761, 1037
- ENOSPC error, 950, 991, 1014, 1206
- ENOTDIR error, 76, 345, 349, 351, 379
- ENOTTY error, 727, 825, 1292
- diagram, 126
- environment list, 34, 125–131, 214, 225, 570–571, 612, 791
- diagram, 126
- modifying, 128–131
- environment variable, 125
- ENXIO error, 707, 916, 1388
- EPERM error, 76, 173, 346, 403, 435, 702, 705, 762, 929, 1357, 1435
- ephemeral port, 1189, 1224, 1263
- Epoch, 40, 186
- epoll, 1327, 1355–1367, 1439
- duplicated file descriptors and, 1363–1364
- events, 1359
- waiting for, 1358–1359
- modifying, 1356–1358
- performance, 1365–1366
- epoll_create(), 801, 1355, 1356, 1363
- prototype, 1356
- epoll_ctl(), 1356–1358, 1364
- prototype, 1356
- EPOLL_CTL_ADD constant, 1357
- EPOLL_CTL_DEL constant, 1357
- EPOLL_CTL_MOD constant, 1357
- definition, 1357
- epoll_input.c, 1362
- epoll_pwait(), 1370
- interrupted by signal handler, 444
- epoll_wait(), 1356, 1358–1360, 1364, 1366–1367
- interrupted by signal handler, 444
- prototype, 1358
- EPOLLERR constant, 1359
- EPOLLET constant, 1359, 1366
- EPOLLHUP constant, 1359
- EPOLLIN constant, 1359
- EPOLLONESHOT constant, 1359, 1360
- EPOLLOUT constant, 1359
- EPOLLPRI constant, 1359
- EPOLLRDHUP constant, 1359
- Eranian, S., 1442
- Erickson, J.M., 1439
- EROFS error, 78
- err_exit(), 52–53
- code of implementation, 56
- prototype, 52
- errExit(), 52
- code of implementation, 55
- prototype, 52
- errExitEN(), 52–53
- code of implementation, 56
- prototype, 52
- errMsg(), 52
- code of implementation, 55
- prototype, 52
- errno variable, 45, 49, 53, 620, 780
- use inside signal handler, 427, 556
- ESRCH error, 158, 402, 403, 702
- diagram, 119
- ETXTBSY error, 78, 373, 565
- euidaccess(), 300
- EXDEV error, 349
- exec(), 32, 286, 345, 514, 563–579, 690, 801
- file descriptors and, 575–578
- process capabilities and, 805
- signals and, 578–579
- threads and, 686
- execl(), 426, 567–568, 570–571
- prototype, 567
- execle(), 426, 567–568, 570
- prototype, 567
- execlp(), 567–569, 570, 575, 589
- prototype, 567
- execlp.c, 1430
- execute permission, 29, 282, 295, 297
- execv(), 426, 567–568, 570
- prototype, 567
- execve(), 32, 426, 514, 563–566, 567–568, 593
- diagram, 515
- prototype, 564
- execvp(), 567–570, 575, 1430
- prototype, 567
- execvpe(), 568
- exit handler, 532, 533–537, 615
- exit status, 32, 545
- exit(), 32, 390, 513, 531–533, 692
- diagram, 515
- prototype, 532
- threads and, 687
- exit_group(), 692
- exit_handlers.c, 536
- definition, 819
- EXIT_SUCCESS constant, 532
- expect command, 1379
- ext2 file system, 234, 255, 257–259
- ext3 file system, 260
- ext4 file system, 261, 1441
- implementation limits, 314
- name, 312
- os2 (JFS), 312
- security, 312, 801
- system, 312, 321, 327
- trusted, 312, 316, 801
- user, 312
- diagram, 1187
F
- F_DUPFD constant, 97
- F_GETFD constant, 577
- F_GETFL constant, 93–94, 96
- F_GETLK constant, 1127
- F_GETOWN constant, 1350–1351
- F_GETOWN_EX constant, 1351, 1354, 1355
- F_GETSIG constant, 1352, 1353
- F_OK constant, 299
- f_owner_ex structure, 1354, 1355
- definition, 1354
- F_OWNER_PGRP constant, 1354
- F_OWNER_PID constant, 1354
- F_OWNER_TID constant, 1355
- F_RDLCK constant, 1125
- F_SETFD constant, 577
- F_SETFL constant, 93–94, 96
- F_SETLK constant, 1126–1127
- F_SETLKW constant, 673, 1127
- F_SETOWN constant, 1281, 1283, 1347
- F_SETOWN_EX constant, 1354
- F_SETSIG constant, 1281, 1352–1353
- F_UNLCK constant, 1125
- F_WRLCK constant, 1125
- Fabry, R.S., 1442
- faccessat(), 365, 426
- fallocate(), 83
- fatal(), 54
- code of implementation, 56
- prototype, 54
- fchdir(), 364
- prototype, 364
- fchmod(), 286, 303, 426, 1110
- prototype, 303
- fchmodat(), 365, 426
- fchown(), 221, 286, 291–293, 426, 1110
- prototype, 292
- fchownat(), 365, 426
- fchroot(), 368
- fcntl(), 92–93, 426, 673, 1124, 1134
- duplicating file descriptors, 97–98
- interrupted by signal handler, 444
- prototype, 93
- setting file descriptor owner, 1347
- setting pipe capacity, 891–892
- fcvt(), 656, 657
- FD_CLR(), 1331–1332
- prototype, 1332
- FD_ISSET(), 1331–1332
- prototype, 1332
- fd_set data type, 64, 1331, 1332, 1344, 1369
- FD_SET(), 1331–1332
- prototype, 1332
- FD_ZERO(), 1331–1332
- prototype, 1332
- prototype, 240
- prototype, 248
- prototype, 353
- feenableexcept(), 391
- Fellinger, P., xli, xlii
- Fenner, B., 1421, 1444
- fexecve(), 15, 426, 571
- prototype, 571
- FF0 constant, 1302
- FF1 constant, 1302
- FFDLY constant, 1302
- fflush(), 239, 244, 538
- prototype, 239
- diagram, 717
- fgetxattr(), 315
- prototype, 315
- poll() on, 1342
- select() on, 1342
- fifo_seqnum.h, 911
- fifo_seqnum_client.c, 914
- fifo_seqnum_server.c, 912, 920
- file, 27
- blocks allocated to, 282
- compression, 306
- creating, 76
- deleting, 346, 352
- holes in, 83, 259, 283
- lease, 615, 800, 1135, 1142
- offset. See file offset
- diagram, 258
- opening, 72–79
- reading, 79–80
- renaming, 348–349
- resource limit on size, 761
- retrieving metadata, 279–285
- size, 282
- synchronous updates, 264, 267, 307
- temporary, 108–109
- truncating, 103
- truncation on open(), 77
- type, 27, 95, 256, 281
- diagram, 281
- writing, 80
- file capabilities, 799, 803–804, 1440
- effective, 799, 802
- inheritable, 799, 803
- permitted, 799, 802
- file descriptor, 30, 69, 94, 530, 603, 613
- closed on process termination, 533
- diagram, 95, 520
- duplicating, 96–98
- multiplexing, 1327, 1330–1346
- ready, 1327
- file descriptor set, 64, 1331
- file hole, 83, 259, 283
- file I/O, 29
- benchmarking, 236
- buffering, 233–250
- diagram, 244
- scatter-gather I/O, 99–102
- speed, 235, 236, 242
- advisory, 1119, 1137
- deadlock, 1128–1129
- with fcntl(), 614, 1124–1137
- with flock(), 614, 1119–1124
- limitations, 1123–1124
- limits, 1135–1136
- mandatory, 265, 293, 1119, 1137–1140
- speed, 1135–1136
- starvation, 1137
- diagram, 1025
- private, 1018, 1024–1025
- shared, 1019, 1025–1029
- file offset, 81, 94, 613
- changing, 81
- file ownership, 29, 281, 291–294, 800
- changing, 291–294
- of new files, 291
- file permissions, 29, 281, 282, 294–299, 800
- changing, 303–304
- diagram, 281
- file system, 22, 254–256
- busy, 270
- diagram, 27, 255
- diagram, 262
- mounting, 264–269
- unmounting, 269–270
- changing, 286, 287–290
- last modification time, 257, 283, 285, 286, 287
- nanosecond precision, 287
- file_perms.c, 296
- filename, 28, 341
- fileno(), 248
- prototype, 248
- filePermStr(), 295–296
- code of implementation, 296
- Filesystem in Userspace (FUSE), 255, 267
- file-system user ID, 171–172, 178, 615, 800
- filter, 31, 899
- finger command, 154
- FIOCLEX constant, 577
- FIOGETOWN constant, 1350
- FIONCLEX constant, 577
- FIOSETOWN constant, 1350
- FIPS 151-1, 12
- FIPS 151-2, 12
- Fletcher, G., xlii
- flistxattr(), 316
- prototype, 316
- definition, 1124
- flock(), 1119–1122, 1147, 1435
- interrupted by signal handler, 444
- prototype, 1119
- Floyd, S., 1194, 1439
- FLUSHO constant, 1303
- footprint.c, 522
- fopen64(), 105
- foreground process group, 39, 700, 708
- diagram, 701, 717
- Forero Cuervo, A., xlii
- fork bomb, 793
- fork(), 31, 426, 513, 515–522, 589, 609, 690, 1430
- diagram, 515
- file descriptors and, 96, 517–520
- glibc wrapper invokes clone(), 609
- prototype, 516
- speed, 610
- stdio buffers and, 537–538
- threads and, 686
- fork_stdio_buf.c, 537
- Fox, B., 25
- prototype, 217
- FPE_FLTDIV constant, 441
- FPE_FLTINV constant, 441
- FPE_FLTOVF constant, 441
- FPE_FLTRES constant, 441
- FPE_FLTUND constant, 441
- FPE_INTDIV constant, 441
- FPE_INTOVF constant, 441
- FPE_SUB constant, 441
- FQDN (fully qualified domain name), 1210
- Franke (2002), 638, 1439
- Franke, H., 1439
- free(), 140–142, 144, 423
- implementation, 144–146
- diagram, 145
- prototype, 141
- free_and_sbrk.c, 142
- prototype, 1217
- FreeBSD, 7, 1442
- fremovexattr(), 286, 316
- prototype, 316
- Frisch, A., 1439
- FS_COMPR_FL constant, 305, 306
- FS_NOTAIL_FL constant, 305, 307
- FS_SECRM_FL constant, 305, 307
- FS_TOPDIR_FL constant, 305, 307
- FS_UNRM_FL constant, 305, 307
- fsck command, 260, 263
- fsetxattr(), 286, 314–315
- prototype, 314
- fsfilcnt_t data type, 64, 276
- fstat(), 279–283, 426, 907, 1110
- prototype, 279
- fstatat(), 365, 426
- fstatfs(), 277
- fstatvfs(), 276–277
- prototype, 276
- fsync(), 240–241, 242, 244, 265, 426, 673, 1240
- prototype, 240
- ftok(), 925–927, 936
- prototype, 925
- ftruncate(), 103, 286, 426, 800, 1139
- prototype, 103
- fts_open(), 358
- FTW structure, 360
- definition, 360
- ftw(), 16, 358, 657
- FTW_CHDIR constant, 359
- FTW_D constant, 359
- FTW_DEPTH constant, 359
- FTW_DNR constant, 359
- FTW_DP constant, 359
- FTW_F constant, 359
- FTW_NS constant, 359
- FTW_PHYS constant, 359, 360
- FTW_SKIP_SIBLINGS constant, 363
- FTW_SKIP_SUBTREE constant, 363
- FTW_SL constant, 359, 360
- FTW_SLN constant, 360
- fully qualified domain name (FQDN), 1210
- FUSE (Filesystem in Userspace), 255, 267
- futex(), 638, 1090
- interrupted by signal, 444
- futimens(), 15, 286, 426
- futimes(), 15, 286, 288–289, 426
- prototype, 289
- G
- gai_strerror(), 1217–1218
- prototype, 1218
- Gallmeister (1995), 222, 512, 751, 1087, 1327, 1439
- Gallmeister, B.O., 1439
- Gamin, 375
- Gammo (2004), 1374, 1439
- Gammo, L., 1439
- Gancarz (2003), 1422, 1439
- Gancarz, M., 1439
- Garfinkel (2003), 20, 795, 1439
- Garfinkel, S., 1439
- gather output, 102
- gcvt(), 656, 657
- get_num.c, 59
- get_num.h, 59
- get_robust_list(), 801
- get_thread_area(), 692
- diagram, 1215
- prototype, 1213
- GETALL constant, 971, 972
- getcwd(), 363–364
- prototype, 363
- getdents(), 352
- getdomainname(), 230
- getegid(), 172–173, 426
- prototype, 173
- getenv(), 127–128, 657
- prototype, 127
- geteuid(),172–173, 426
- prototype, 173
- getfattr command, 312
- getfsent(), 263
- getgid(),172–173, 426
- prototype, 173
- getgrent(), 161, 657
- getgrgid(),158–159, 657
- prototype, 158
- getgrgid_r(), 158, 658
- getgrnam(), 158–159, 657
- prototype, 158
- getgrnam_r(), 158, 658
- prototype, 179
- prototype, 1231
- prototype, 1231
- getInt(), 58–59
- code of implementation, 60–61
- prototype, 58
- getitimer(), 16, 481
- prototype, 481
- prototype, 825
- code of implementation, 60
- prototype, 58
- getmntent(), 263
- prototype, 1218
- GETNCNT constant, 972
- getopt(), 657, 1405–1411
- prototype, 1406
- getopt_long(), 1411
- prototype, 164
- getpeername(), 426, 1263–1264
- prototype, 1263
- getpgid(), 704
- getpgrp(), 426, 701–702, 704
- prototype, 701
- GETPID constant, 972
- getpid(), 114, 426, 604, 690
- prototype, 114
- getpmsg(), 673
- getppid(), 115, 426, 553, 608, 690
- prototype, 115
- getpriority(), 735–736
- prototype, 735
- getprotobyname(), 657
- getprotobynumber(), 657
- getprotoent(), 657
- getpwent(), 161, 657
- prototype, 161
- getpwnam(), 157–158, 657
- prototype, 157
- getpwnam_r(), 158, 658
- getpwuid(),157–158, 657
- prototype, 157
- getpwuid_r(), 158, 658
- getresgid(), 176–177
- prototype, 177
- getresuid(), 176–177
- prototype, 177
- getrlimit(), 755–757, 759
- prototype, 756
- getrusage(), 560, 619, 691, 694, 753–755, 765
- prototype, 753
- prototype, 1234
- getservbyport(), 657, 1205, 1234–1235
- prototype, 1234
- getsid(), 704–705
- prototype, 704
- prototype, 1263
- prototype, 1278
- getspent(), 161–162
- prototype, 161
- getspnam(), 161–162
- prototype, 161
- gettid(), 226, 497, 605, 625, 749, 1355
- diagram, 188
- prototype, 186
- getty command, 820
- getuid(),172–173, 426
- prototype, 173
- getutent_r(), 658, 823
- getutid_r(), 658, 823
- getutline_r(), 658, 823
- getutxent(), 657, 822
- prototype, 822
- getutxid(), 657, 822–823
- prototype, 822
- getutxline(), 657, 822–823
- prototype, 822
- GETVAL constant, 971, 972
- getwd(), 364
- getxattr(), 315, 329, 345
- prototype, 315
- GETZCNT constant, 972
- gid_t data type, 64, 157, 158, 159, 173, 174, 175, 177, 178, 179, 280, 292, 330, 927
- Gilligan, S., 1194
- glibc. See GNU C library
- globbing, 903
- Gloger, W., xxxix
- Gmelch, T., xlii
- gmtime(), 189, 657
- diagram, 188
- prototype, 189
- gmtime_r(), 189, 658
- GNU C library, 47–48
- manual, 1421
- gnu_get_libc_version(), 48
- prototype, 48
- Göllesch, N., xli
- Gont (2008), 1235, 1439
- Gont (2009a), 1235, 1439
- Gont (2009b), 1283, 1439
- Gont, F., xxxix, 1439
- Goodheart, B., 1440
- Goralski, W., 1440
- Gorman, M., xli, 1440
- grantpt(), 1380–1381
- prototype, 1381
- Gratzl, C., xli, xlii
- retrieving records from, 158–160
- definition, 159
- code of implementation, 160
- code of implementation, 160
- Grünbacher (2003), 337, 1440
- Grünbacher, A., xl, 337, 1440
- Gutmann, P., 1440
H
- h_errno variable, 1231
- Haig, B., xlii
- Hallyn, S., xli, 1437, 1440
- handle, 331
- Handley, M., 1194
- handling_SIGTSTP.c, 724
- Harbison, S.P., 1440
- Hartinger, M., xli, xlii
- Hauben, R., 20
- hcreate(), 657
- hdestroy(), 657
- heap, 31, 116, 612
- Heasman, J., 1437
- Hellwig, C., xl
- Henderson, R., xli
- Herbert (2004), 1235, 1440
- Herbert, T.F., 1440
- herror(), 1232–1233
- prototype, 1233
- Hinden, R., 1194
- Hoffman, R., xliii
- HOME environment variable, 34, 154
- host byte order, 1198
- definition, 1232
- hostname, 1204
- canonical, 1210, 1216
- Howard, M., xlii
- HP-UX, 5
- hsearch(), 657
- hstrerror(), 1232–1233
- prototype, 1233
- htonl(), 1199
- prototype, 1199
- htons(), 1199
- prototype, 1199
- Hubička (2003), 837, 1440
- Hubička, J., 1440
- huge page, 999
- HUPCL constant, 1303
- HURD, 6, 1443
- HZ constant, 205
I
- i_fcntl_locking.c, 1130
- i6d_ucase_cl.c, 1209
- i6d_ucase_sv.c, 1208
- I18N, 200
- IA-64, 10, 1442
- ICRNL constant, 1296, 1297, 1298, 1302
- id_echo.h, 1240
- id_echo_cl.c, 1242
- id_echo_sv.c, 1241
- id_t data type, 64, 550, 735
- idshow.c, 182
- IEXTEN constant, 1296, 1297, 1298, 1299, 1303, 1305, 1307
- IFS environment variable, 581, 791
- IGNBRK constant, 1302, 1304
- IGNCR constant, 1296, 1297, 1302
- ignore_pending_sig.c, 1429
- IGNPAR constant, 1302, 1305
- ILL_BADSTK constant, 441
- ILL_COPROC constant, 441
- ILL_ILLADR constant, 441
- ILL_ILLOPC constant, 441
- ILL_ILLOPN constant, 441
- ILL_ILLTRP constant, 441
- ILL_PRVOPC constant, 441
- ILL_PRVREG constant, 441
- IN_IGNORED constant, 378, 380, 381
- IN_ISDIR constant, 378, 380
- IN_MASK_ADD constant, 378, 379
- IN_ONESHOT constant, 378, 379, 380
- IN_ONLYDIR constant, 378, 379
- in_port_t data type, 64, 1202, 1203
- inet_aton(), 1204, 1230–1231
- prototype, 1231
- inet_ntoa(), 657, 1204, 1231
- prototype, 1231
- inet_ntop(), 1205, 1206
- prototype, 1206
- inet_pton(), 1205, 1206
- prototype, 1206
- code of implementation, 1230
- prototype, 1227
- code of implementation, 1230
- prototype, 1227
- code of implementation, 1228
- prototype, 1226
- code of implementation, 1230
- prototype, 1226
- adopts orphaned processes, 553
- signals and, 402
- init_module(), 801
- prototype, 179
- initSemAvailable(), 989–990
- code of implementation, 990
- initSemInUse(), 989–990
- code of implementation, 990
- INLCR constant, 1296, 1302
- ino_t data type, 64, 280, 353
- i-node, 95, 256–259
- diagram, 95, 258, 340
- read() interrupted by signal handler, 444
- inotify_add_watch(), 376, 377
- prototype, 377
- definition, 379
- diagram, 380
- prototype, 376
- inotify_rm_watch(), 376, 378
- prototype, 378
- INPCK constant, 1302, 1305
- int32_t data type, 472, 593, 819
- internationalization, 200
- internet, 1179
- Internet Society, 1193
- interpreter, 572
- interpreter script, 572–575
- interprocess communication (IPC), 37, 877–887
- performance, 887
- taxonomy of facilities, diagram, 878
- interrupt character, 392, 1296, 1297
- interval timer, 479–485, 614
- scheduling and accuracy, 485
- intquit.c, 401
- asynchronous I/O, POSIX, 613, 1327, 1347
- direct, 246–248
- event, 1327
- multiplexed, 1327, 1330–1346
- nonblocking, 77, 103–104, 915–917, 1326, 1330
- synchronous, 241–243
- io_getevents(), interrupted by signal handler, 444
- ioctl(), 72, 86, 308, 1293, 1319
- interrupted by signal handler, 443
- prototype, 86
- ioperm(), 801
- iopl(), 801
- ioprio_set(), 801
- iovec structure, 99–100, 102
- definition, 99
- IP (Internet protocol), 1184–1186, 1193, 1439
- address, 1186–1188
- datagram, 1184
- duplication of, 1185
- diagram, 1181
- fragmentation, 1185, 1440
- header, 1185
- checksum, 1185
- unreliability, 1185
- ipc(), 922
- ipc_perm structure, 927–928, 948, 972, 1012
- definition, 927
- ipcrm command, 934
- ipcs command, 934, 952
- IPv4, 1184
- address, 1186–1187
- wildcard address, 1187
- diagram, 1188
- IPv5, 1184
- IPv6, 1184, 1194
- address, 1188
- wildcard address, 1188, 1203
- is_echo_cl.c, 1258, 1287
- is_echo_inetd_sv.c, 1251
- is_echo_sv.c, 1244, 1252
- is_echo_v2_sv.c, 1435
- is_seqnum.h, 1220
- is_seqnum_cl.c, 1224
- is_seqnum_sv.c, 1221
- is_seqnum_v2.h, 1435
- is_seqnum_v2_cl.c, 1435
- is_seqnum_v2_sv.c, 1435
- isalpha(), 202
- isatty(), 1321
- prototype, 1321
- ISIG constant, 1296, 1297, 1298, 1299, 1303
- ISTRIP constant, 1302
- definition, 498
- itimerspec_from_str.c, 502
- itimerspecFromStr(), 502
- code of implementation, 502–503
- definition, 480
- IUCLC constant, 1302, 1303, 1305
- IUTF8 constant, 1302, 1305
- IXANY constant, 1299, 1302
- IXOFF constant, 1296, 1298, 1299, 1302
- IXON constant, 1296, 1298, 1302
J
- Jacobson, V., 1194
- Jaeger, A., xl
- jail() (BSD), 368
- JFS file system, 261
- jiffy, 205–206
- Jinmei, T., 1194
- job. See process group
- job control, 39, 221, 714–725
- diagram, 717
- implementation, 717–718
- job_mon.c, 719
- job-control signal, 717
- handling within applications, 722–725
- Johnson, M.K., 1440
- Johnson, R., 1438
- Johnson, S., 4
- Jolitz, L.G., 7
- Jolitz, W.F., 7
- Jones, R., xl
- Josey (2004), 20, 222, 1440
- Josey, A., xli, 1440
- journaling file system, 260–261
- Joy, W.N., 4, 25, 1442
- jumbogram, 1185
K
- K&R C, 10
- Kahabka, T., xlii
- Kara, J., xlii
- Kegel, D., 1374
- Kegel, K., xli
- Kent (1987), 1186, 1440
- Kent, A., 1440
- kernel, 21
- configuration, 1417
- source code, 1424
- kernel mode, 23, 44
- kernel scheduling entity (KSE), 603, 687
- Kernighan, B.W., 1437, 1440
- kill(), 401–403, 426, 439, 441, 458, 800
- prototype, 402
- killpg(), 405, 458
- prototype, 405
- Kirkwood, M., 1439
- Kleen, A., xl
- Kleikamp, D., xlii
- klogctl(), 776
- diagram, 775
- Korn shell (ksh), 25
- Korn, D., 25
- Korrel, K., xlii
- KSE (kernel scheduling entity), 603, 687
- ksh (Korn shell), 25
- Kumar, A., 1441
- Kuznetsov, A., 1443
L
- L_INCR constant, 82
- L_SET constant, 82
- L_XTND constant, 82
- l64a(), 657
- Landers, M., xl, xlii
- LANG environment variable, 203
- last command, 817
- lastcomm command, 591
- definition, 830
- Lawyer, D., 1322
- lazy swap reservation, 1038
- LC_ALL environment variable, 203
- LC_ALL locale category, 203
- LC_COLLATE environment variable, 203
- LC_COLLATE locale category, 202
- LC_CTYPE environment variable, 203
- LC_MEASUREMENT locale category, 202
- LC_MESSAGES environment variable, 203
- LC_MONETARY environment variable, 203
- LC_NUMERIC environment variable, 203
- LC_PAPER locale category, 202
- LC_TELEPHONE locale category, 202
- LC_TIME environment variable, 203
- lchown(), 286, 292–293, 345
- prototype, 292
- LD_ASSUME_KERNEL environment variable, 695
- LD_BIND_NOW environment variable, 861
- LD_DEBUG environment variable, 874–875
- LD_PRELOAD environment variable, 873
- LD_RUN_PATH environment variable, 851
- ldd command, 843
- Leffler, S.J., 1442
- LEGACY (SUSv3 specification), 15
- Lemon, J., 1441
- Leroy, X., 689
- Levine, J., 1441
- Lewine, D., 1441
- Lezcano, D., 1437
- lgamma(), 657
- lgammaf(), 657
- lgammal(), 657
- lgetxattr(), 315, 345
- prototype, 315
- Liang, S., 1441
- libcap package, 807
- libcap-ng package, 808
- Libenzi, D., xli
- Libes (1989), 20, 1441
- Libes, D., 1441
- library function, 46
- Lindner, F., 1437
- link, 27, 257, 339–342
- creating, 344–346
- diagram, 343
- removing, 346–348
- link editing, 840
- link(), 286, 344–346, 426, 1145
- prototype, 344
- linkat(), 365, 426
- linker, 833, 1441
- linking, 840
- distributions, 10
- history, 5–10, 1443
- kernel, 6–7
- programming-related newsgroups, 1423
- Linux Foundation, 18
- Lions (1996), 24, 1441
- Lions, J., 1441
- listen(), 426, 1152, 1156–1157
- diagram, 1156
- prototype, 1156
- listxattr(), 316, 345
- prototype, 316
- little-endian byte order, 1198
- diagram, 1198
- Liu, C., 1437
- llistxattr(), 316, 345
- prototype, 316
- locale, 200–204, 615
- specifying to a program, 203–204
- localeconv(), 202, 657
- localization, 200
- localtime(), 189, 198, 657
- diagram, 188
- prototype, 189
- localtime_r(), 189, 658
- lockf(), 673, 1127
- interrupted by signal handler, 444
- lockRegion(), 1133
- code of implementation, 1134
- lockRegionWait(), 1133
- code of implementation, 1134
- LOG_MASK(), 781
- LOG_UPTO(), 781
- login accounting, 817–832
- login(), 827
- logout(), 827
- logwtmp(), 827
- Lokier, J., xl
- London, T., 4
- longjmp(), 131–133, 135, 151, 360, 1426
- incorrect use of, 135
- prototype, 132
- longjmp.c, 134
- lookup_dcookie(), 801
- Love (2010), 46, 210, 250, 278, 530, 751, 1422, 1441
- Love, R., xli, 1441
- lrand48(), 657
- lremovexattr(), 286, 316, 345
- prototype, 316
- lsattr command, 305
- lseek(), 30, 81–83, 96, 257, 426
- diagram, 82
- prototype, 81
- lseek64(), 105
- lsetxattr(), 286, 314–315, 345
- prototype, 314
- lsof command, 342
- lstat(), 279–283, 345, 426
- prototype, 279
- Lu (1995), 857, 1441
- Lu, H.J., xli, 1441
- lutimes(), 286, 288–289, 345
- prototype, 289
- lvalue, 53
M
- Mach, 6
- MADV_DONTNEED constant, 1055
- MADV_HWPOISON constant, 1055
- MADV_MERGEABLE constant, 1055
- MADV_NORMAL constant, 1054
- MADV_SEQUENTIAL constant, 1055
- MADV_UNMERGEABLE constant, 1055
- MADV_WILLNEED constant, 764, 1055
- madvise(), 1054–1055
- prototype, 1054
- madvise_dontneed.c, 1434
- magic SysRq key, 1300
- Mahdavi, J., 1194
- major(), 281
- make program, 1442
- make_zombie.c, 554, 562
- makecontext(), 442
- mallinfo(), 147
- malloc(), 140–142, 423, 1035
- debugging, 146–147
- implementation, 144–146
- diagram, 145
- prototype, 141
- mallopt(), 147, 1035
- Mane-Wheoki, J., xlii
- Mann (2003), 1250, 1442
- Mann, S., 1442
- manual pages, 1419–1421
- MAP_ANON constant, 1034
- MAP_ANONYMOUS constant, 1033, 1034
- MAP_FAILED constant, 1020, 1037
- MAP_HUGETLB constant, 800, 1033
- MAP_POPULATE constant, 1033
- MAP_PRIVATE constant, 1009, 1018, 1021, 1033
- Marshall, P., xli, xlii
- marshalling, 1200
- Mason, C., xli
- Mathis, M., 1194
- Matloff, N., 1442
- Matz, M., xli
- Maxwell, S., 1442
- mbind(), 801
- McCann, J., 1194
- McGrath, R., 47
- McGraw, G., 1445
- mcheck(), 146
- McKusick, M.K., 1442
- Mecklenburg (2005), 431, 1442
- Mecklenburg, R., 1442
- mem_segments.c, 117
- memalign(), 149–150
- prototype, 149
- memory leak, 146
- resource limit on, 761
- creating, 1020–1023
- nonlinear, 1041–1043
- private, 35, 1018, 1021
- remapping, 1037–1038
- removed on process termination, 533
- shared, 35, 1018, 1021
- synchronizing, 1031–1032
- unmapping, 1023–1024
- changing, 1045–1047
- memory residence, 1051–1054
- metadata, 239
- migrate_pages(), 801
- Miller, R., 4
- Mills (1992), 205, 1442
- Mills, D.L., 1442
- prototype, 1051
- mingetty command, 820
- Minix, 6, 1422
- minor(), 281
- MINSIGSTKSZ constant, 435
- Mitchell, E.L., 1442
- mkdir(), 286, 350–351, 426
- prototype, 350
- mkdirat(), 365, 426
- mkdtemp(), 15, 351
- mkfifo(), 286, 426, 907
- prototype, 907
- mkfifoat(), 365, 426
- mkfs command, 254
- mknod command, 252
- mknod(), 252, 286, 426, 800, 907
- mknodat(), 365, 426
- mkstemp(), 108–109, 791
- prototype, 108
- mkswap command, 254
- mktemp(), 109
- mktime(), 190, 198
- diagram, 188
- prototype, 190
- mlock(), 800, 1048, 1049–1050
- prototype, 1049
- mlockall(), 761, 800, 1048, 1050–1051
- prototype, 1050
- diagram, 1025, 1029, 1030
- prototype, 1020
- RLIMIT_AS resource limit and, 760
- MMAP_THRESHOLD constant, 1035
- mmap64(), 105
- mmcat.c, 1022
- mmcopy.c, 1434
- MNT_DETACH constant, 270, 272
- MNT_EXPIRE constant, 270
- MNT_FORCE constant, 270
- Mochel, P., 1442
- modify_env.c, 131
- Mogul, J.C., 1193, 1440
- Molnar, I., 689
- Mosberger, D., 1442
- diagram, 262
- mount(), 246–267, 607, 801
- prototype, 264
- mprobe(), 146
- mprotect(), 1022, 1045–1046
- prototype, 1046
- mq_attr structure, 1064, 1068, 1070, 1072
- definition, 1068
- mq_close(), 1058, 1064, 1066
- prototype, 1066
- mq_getattr(), 1058, 1064, 1070–1071
- prototype, 1070
- mq_notify(), 1058, 1064, 1078–1079
- prototype, 1078
- mq_notify_sig.c, 1080
- mq_notify_sigwaitinfo.c, 1434
- mq_open(), 1058, 1064–1065
- prototype, 1064
- mq_receive(), 673, 1058, 1064, 1074–1075
- interrupted by signal handler, 444
- prototype, 1075
- mq_send(), 673, 1058, 1064, 1073
- interrupted by signal handler, 444
- prototype, 1073
- mq_setattr(), 1058, 1064, 1072
- prototype, 1072
- interrupted by signal handler, 444
- prototype, 1077
- interrupted by signal handler, 444
- prototype, 1077
- mq_unlink(), 1058, 1064, 1066
- prototype, 1066
- mqd_t data type, 64, 882, 1058, 1059, 1064, 1065, 1066, 1070, 1072, 1073, 1075, 1077, 1078, 1083
- mrand48(), 657
- mremap(), 761, 1037–1038
- prototype, 1037
- RLIMIT_AS resource limit and, 760
- MS_NOSUID constant, 264, 266, 272
- MS_PRIVATE constant, 267
- MS_RDONLY constant, 264, 266, 272
- MS_REC constant, 264, 266, 273
- MS_SYNCHRONOUS constant, 264, 267
- msgctl(), 922, 947
- prototype, 947
- prototype, 938
- msgrcv(), 673, 922, 943–944, 947, 948, 949
- interrupted by signal handler, 444
- prototype, 943
- msgsnd(), 673, 922, 940–941, 947, 948, 949, 950
- interrupted by signal handler, 444
- prototype, 941
- msqid_ds structure, 922, 947, 948–949, 950
- definition, 948
- msync(), 286, 673, 1022, 1024, 1031–1032
- prototype, 1031
- mtrace(), 146
- Mui, L., 1444
- multi_descriptors.c, 1426
- multi_SIGCHLD.c, 557
- multi_wait.c, 543
- MULTICS, 2
- multiplexed I/O, 1327, 1330–1346
- munlock(), 1049–1050
- prototype, 1049
- munlockall(), 1050–1051
- prototype, 1050
- munmap(), 1022, 1023–1024, 1058
- prototype, 1023
- muntrace(), 146
- mutex, 614, 631–642, 881
- attributes, 640
- deadlock, 639
- diagram, 639
- destroying, 640
- initializing, 639–640
- locking, 636, 637–638
- performance, 638
- statically allocated, 635
- type, 640–642
- unlocking, 636
- mutual exclusion, 634
N
- N_TTY constant, 1292, 1294
- nanosleep(), 488–489, 673
- interrupted by signal handler, 444
- prototype, 488
- NCCS constant, 1292
- necho.c, 123
- network byte order, 1198–1199
- diagram, 1181
- networking protocol, 1180
- Neville-Neil, G.V., 1442
- new_intr.c, 1301
- newgrp command, 155, 156
- NeXTStep, 5
- nfds_t data type, 65, 1337
- nftw(), 358–360, 657
- prototype, 358
- nftw_dir_tree.c, 360
- NI_DGRAM constant, 1218
- NI_NOFQDN constant, 1219
- NI_NUMERICHOST constant, 1219
- nice command, 735
- nice value, 614, 733–737, 801
- diagram, 734
- NPTL nonconformance, 693
- resource limit, 762
- nice(), 735, 801
- RLIMIT_NICE resource limit and, 762
- nl_langinfo(), 657
- NL0 constant, 1302
- NL1 constant, 1302
- NLDLY constant, 1302
- nm command, 844
- no_echo.c, 1306
- NOFLSH constant, 1303, 1305, 1307
- nohup command, 710
- nonlocal goto, 131–137
- nonreentrant.c, 424
- Nordmark, E., 1194
- NSIG constant, 408
- ntohl(), 1199
- prototype, 1199
- ntohs(), 1199
- prototype, 1199
O
- O_CREAT constant, 74, 76, 90, 107, 1059, 1065, 1109, 1145, 1146
- O_EXCL constant, 74, 76, 90, 109, 791, 1059, 1065, 1109, 1145
- O_NDELAY constant, 104
- O_NOCTTY constant, 74, 77, 706, 707, 768, 1380
- O_RDONLY constant, 73, 74, 1060, 1065, 1109
- O_RDWR constant, 73, 74, 1060, 1065, 1109, 1380
- performance impact, 242
- O_TRUNC constant, 74, 77, 1109, 1139, 1146
- O_WRONLY constant, 73, 74, 1060, 1065
- OCRNL constant, 1296, 1302
- OFDEL constant, 1302, 1303
- off_t data type, 65, 66, 81, 82, 98, 102, 103, 104, 106, 244, 280, 757, 759, 1020, 1125, 1261
- off64_t data type, 105
- offsetof(), 357
- OFILL constant, 1302, 1303
- OLCUC constant, 1302, 1303
- on_exit(), 532, 535–536, 866
- prototype, 535
- ONLCR constant, 1296, 1298, 1302
- ONLRET constant, 1296, 1302
- ONOCR constant, 1296, 1302
- OOM killer, 1039
- opaque (data type), 621
- diagram, 95
- Open Group, The, 13
- open(), 70, 72–78, 96, 286, 345, 426, 673, 801, 1139, 1142, 1145, 1146
- directories and, 76
- FIFOs and, 916
- interrupted by signal handler, 444
- prototype, 72
- open64(), 105
- openat(), 15, 365–366, 426, 674
- prototype, 365
- prototype, 352
- prototype, 777
- openpty(), 1386
- operating system, 21, 1438, 1444
- opportunistic lock, 1142
- opterr variable, 1406
- optind variable, 1406
- optopt variable, 1406
- O’Reilly, T., 1444
- orphan.c, 1430
- orphaned process, 553
- orphaned process group, 533, 725–730
- diagram, 726
- orphaned_pgrp_SIGHUP.c, 728
- OSF/1, 4
- ouch.c, 399
P
- P_ALL constant, 550
- P_PGID constant, 550
- P_PID constant, 550
- Padhye, J., 1194
- page (virtual memory), 119
- diagram, 120
- on various hardware architectures, 119
- diagram, 120, 521, 1026
- Pai, R., 1445
- PARENB constant, 1303, 1305
- parent directory, 27
- parent process, 31, 513, 515, 553
- parent process ID, 32, 114–115, 608, 613
- Pariag, D., 1439
- PARMRK constant, 1302, 1305
- PARODD constant, 1303, 1305
- partial write, 80, 891, 1254
- definition, 157
- retrieving records from, 157–158, 160
- PATH environment variable, 34, 567, 568–570, 791
- path MTU, 1185
- prototype, 217
- pathname, 28
- absolute, 29, 367
- parsing, 370–372
- relative, 29, 363
- resolving, 369–370
- pause(), 418, 426, 673
- prototype, 418
- Paxson, V., 1194
- pclose(), 902–903, 919
- prototype, 902
- PDP-11, 2, 3, 391
- Peach, J., xli
- Peek, J., 1442
- PENDIN constant, 1303
- perror(), 49–50
- prototype, 49
- persistence, 886
- personality(), 1334
- PGID (process group ID), 39, 613, 699, 705
- Phillips, M., xli
- pid_t data type, 65, 114, 115, 402, 405, 438, 458, 493, 496, 516, 523, 542, 544, 552, 599, 605, 699, 700, 701, 702, 704, 705, 708, 741, 742, 744, 747, 749, 750, 819, 948, 1012, 1125, 1354, 1385
- Piggin, N., xli
- pipe, 3, 214, 282, 392, 882, 883, 886, 889–906
- bidirectional, 890
- capacity, 891
- closing unused file descriptors, 894
- creating, 892
- diagram, 879, 890
- poll() on, 1342
- select() on, 1342
- stdio buffering and, 906
- used for process synchronization, 897–899
- pipe(), 286, 426, 801, 892, 1175
- diagram, 892
- prototype, 892
- pipe_ls_wc.c, 900
- pipe2(), 894
- pivot_root(), 345, 801
- Plauger, P.J., 1442
- Pluzhnikov, P., xli
- pmsg_getattr.c, 1071
- Podolsky, M., 1194
- poll, 1326
- poll(), 426, 673, 1337–1339, 1389, 1439
- comparison with select(), 1344–1345
- interrupted by signal handler, 444
- performance, 1365
- problems with, 1346
- prototype, 1337
- POLL_ERR constant, 441, 1353
- POLL_HUP constant, 441, 1343, 1353
- POLL_IN constant, 440, 441, 1353
- POLL_OUT constant, 440, 441, 1353
- poll_pipes.c, 1340
- POLL_PRI constant, 441, 1353
- Pollard, J., xlii
- POLLERR constant, 1337, 1338, 1342, 1343, 1353
- pollfd structure, 1337–1338
- definition, 1337
- POLLHUP constant, 1337, 1338, 1342, 1343, 1353
- POLLIN constant, 1337, 1338, 1342, 1343, 1353
- POLLNVAL constant, 1337, 1338, 1339
- Pollock, W., xliii
- POLLOUT constant, 1337, 1338, 1342, 1343, 1353
- POLLPRI constant, 1337, 1338, 1343, 1353, 1389
- POLLRDHUP constant, 1337, 1338, 1339, 1343
- POLLRDNORM constant, 1337, 1338, 1353
- POLLWRNORM constant, 1337, 1338, 1353
- popen(), 902–903, 919
- diagram, 902
- prototype, 902
- popen_glob.c, 904
- ephemeral, 1189, 1224, 1263
- privileged, 800, 1189
- well-known, 1189
- portability, xxxvi, 10, 61–68, 211, 1420
- source code vs. binary, 19
- POSIX, 11
- POSIX asynchronous I/O, 613, 1327, 1347
- retrieving value of, 491–492
- setting value of, 492
- creating, 1059–1060
- deleting, 1060–1061
- listing, 1061
- name, 1058–1059
- permissions, 1060
- persistence, 1060–1061
- portability, 884, 1061
- attributes, 1068–1072
- modifying, 1072
- retrieving, 1070–1071
- closed on process termination, 533
- closing, 1066
- creating, 1064–1065
- descriptor, 64, 1065
- limits, 1085–1086
- message notification, 1077–1083
- via a signal, 1079–1081
- via a thread, 1082–1083
- opening, 1064
- with timeout, 1077
- with timeout, 1077
- unlinking, 1066–1067
- closed on process termination, 533
- limits, 1104–1105
- named, 614, 882, 886, 1089, 1090–1093
- closing, 1093
- initializing, 1091
- opening, 1090–1091
- unlinking, 1093
- unnamed, 614, 882, 886, 1089, 1099–1103
- destroying, 1102
- initializing, 1100–1101
- creating, 1108, 1109–1111
- removing, 1114
- arming, 498–499
- creating, 495–497
- deleting, 499
- disarming, 498–499
- notification via a signal, 499–503
- notification via a thread, 504–507
- timer overrun, 502, 503–504, 505
- POSIX.1, 11, 17, 1442
- POSIX.1b, 12, 17, 41, 61, 456, 491, 495, 738, 1057
- POSIX.1c, 12, 17, 61, 620
- POSIX.1d, 12, 17, 1077, 1096
- POSIX.1e, 319, 337, 798, 1369
- POSIX.1g, 12, 16, 17, 1149
- POSIX.1j, 12, 17
- POSIX.2, 12, 17
- POSIX.2c, 319, 337
- POSIX.4, 12, 1439
- posix_fadvise(), 244–246, 1032
- prototype, 244
- posix_fallocate(), 83
- posix_madvise(), 1055
- posix_memalign(), 149–150
- prototype, 149
- prototype, 1380
- posix_spawn(), 514
- POSIXLY_CORRECT environment variable, 1410
- Postel, J., 1193, 1194
- Potthoff, K.J., xli
- PPID (parent process ID), 32, 114–115, 608, 613
- ppoll(), 1370
- interrupted by signal handler, 444
- PR_CAPBSET_DROP constant, 806
- PR_SET_KEEPCAPS constant, 813, 816
- PR_SET_PDEATHSIG constant, 553, 615
- prctl(), 449, 553, 806, 813
- pread(), 98–99, 286, 673
- prototype, 98
- preadv(), 102, 286
- prototype, 102
- print_rusage.c, 1432
- printf()
- use within signal handlers, 427–428
- code of implementation, 409
- printSigMask(), 408
- code of implementation, 409
- printSigset(), 408
- code of implementation, 409
- code of implementation, 546–547
- PRIO_PGRP constant, 735
- privileged process, 33, 168
- process, 22, 31, 113
- checking for existence of, 403–404
- CPU affinity, 615, 748–750
- creating, 31, 515–525
- credentials, 167–184
- exit status, 32, 545
- ID, 32, 114, 604, 608, 613, 705
- memory layout, 31, 115–118
- diagram, 119, 1007
- memory policy, 615
- privileged, 33, 168
- resource limit on number of, 763
- resource usage, 552, 614, 753–755
- root directory, 225, 367–368, 604, 613
- setting as owner of a file descriptor, 1347, 1350–1351
- termination, 32, 531–533
- abnormal, 389, 433, 441, 531
- normal, 531
- from signal handler, 549–550
- termination status, 32, 513, 531, 545
- umask, 301–303, 328, 351, 604, 613, 790, 907, 923, 1060, 1065, 1091, 1110, 1174
- unprivileged, 33
- process accounting, 591–598, 801
- Version 3, 597–598
- process capabilities, 33, 615, 798–799
- changing, 807–808
- effective, 799, 802, 807
- inheritable, 799, 803, 807
- permitted, 798, 802, 807
- process group, 39, 699, 701–704
- creating, 702
- diagram, 701
- foreground. See foreground process group
- leader, 39, 699, 702, 705
- lifetime, 699
- orphaned. See orphaned process group
- setting as owner of a file descriptor, 1347, 1350–1351
- waiting on member of, 544, 550
- process group ID, 39, 613, 699, 705
- resource limit on, 761
- procfs_pidmax.c, 228
- procfs_user_exe.c, 1428
- prod_condvar.c, 645
- prod_no_condvar.c, 642
- program, 30, 113
- executing, 32, 563–571
- adjusting, 139–140
- PROT_NONE constant, 1020, 1021
- Provos, N., 1328
- pselect(), 426, 673, 1369
- interrupted by signal handler, 444
- prototype, 1369
- psem_create.c, 1092
- psem_getvalue.c, 1098
- psem_post.c, 1097
- psem_timedwait.c, 1434
- psem_unlink.c, 1094
- psem_wait.c, 1095
- pset_bind(), 748
- pseudoterminal, 39, 1375–1399
- BSD, 1379, 1395–1397
- device pair, 1376
- diagram, 1377, 1378
- I/O, 1388–1389
- master, 1376
- opening, 1380–1381, 1383–1384
- poll() on, 1342
- select() on, 1342
- slave, 1376
- changing ownership and permissions of, 1381, 1396
- obtaining name of, 1382
- opening, 1383
- unlocking, 1382
- UNIX 98, 1379, 1380
- pshm_create.c, 1110
- pshm_read.c, 1113
- pshm_unlink.c, 1114
- pshm_write.c, 1112
- psiginfo(), 440
- psignal(), 15, 406
- prototype, 406
- pthread_attr_destroy(), 628
- prototype, 671
- prototype, 676
- prototype, 676
- prototype, 644
- pthread_cond_destroy(), 652
- prototype, 652
- prototype, 651
- prototype, 644
- interrupted by signal handler, 444
- prototype, 645
- pthread_cond_wait(), 643–644, 673, 683
- interrupted by signal handler, 444
- prototype, 644
- prototype, 622
- pthread_detach(), 627–628
- prototype, 627
- pthread_equal(), 624–625, 1431
- prototype, 624
- pthread_exit(), 623–624
- prototype, 623
- prototype, 493
- prototype, 662
- prototype, 625
- prototype, 661
- pthread_kill(), 683, 684, 690
- prototype, 684
- pthread_mutex_destroy(), 640
- prototype, 640
- prototype, 639
- interrupted by signal handler, 444
- prototype, 636
- interrupted by signal handler, 444
- interrupted by signal handler, 444
- prototype, 636
- pthread_mutexattr_destroy(), 642
- pthread_once(), 658–659
- prototype, 658
- prototype, 624
- prototype, 672
- prototype, 672
- prototype, 662
- pthread_sigmask(), 683, 684
- prototype, 684
- prototype, 685
- prototype, 676
- Pthreads, 617
- ptmr_null_evp.c, 1429
- ptmr_sigev_signal.c, 500
- ptmr_sigev_thread.c, 506
- ptrace(), 394, 545, 608, 801
- ptrdiff_t data type, 65
- prototype, 1382
- pty, 1376
- pty_fork.c, 1386
- ptyFork(), 1385–1386
- code of implementation, 1386–1388
- prototype, 1385
- code of implementation, 1384, 1396–1397
- prototype, 1383
- putenv(), 128, 130, 657
- prototype, 128
- putpmsg(), 673
- pututxline(), 657, 826
- prototype, 826
- pwrite(), 98–99, 286, 673
- prototype, 98
- pwritev(), 102, 286
- prototype, 102
Q
- quantum, 733
- Quartermann (1993), 20, 1442
- Quartermann, J.S., 1442
- quit character, 1296, 1298
- quotactl(), 345, 801
R
- R_OK constant, 299
- Rago, S.A., 1421, 1444
- raise(), 404, 426, 441, 458
- prototype, 404
- Ramakrishnan, K., 1194
- Ramey, C., 25
- Rampp, F., xli
- rand(), 657
- rand_r(), 658
- Randow, D., xlii
- raw I/O, 246–248
- raw socket, 1184
- rdwrn.c, 1255
- read permission, 29, 282, 294, 297
- read(), 70, 79–80, 286, 426, 673, 1138
- FIFO, 918
- interrupted by signal handler, 443
- pipe, 918
- prototype, 79
- by background job, 394
- by orphaned process group, 730
- prototype, 353
- readdir_r(), 357, 658
- prototype, 357
- code of implementation, 1201
- prototype, 1200
- prototype, 350
- readn(), 1254
- code of implementation, 1255
- prototype, 1254
- readv(), 99–100, 286, 673
- interrupted by signal handler, 443
- prototype, 99
- ready file descriptor, 1327
- real time, 40, 185
- realloc(), 148–149, 1038
- prototype, 148
- prototype, 369
- realtime, 41
- realtime scheduling, 737–747, 801
- policy, 614, 738
- changing, 741–744
- priority, 614, 738, 740
- changing, 741–744
- relinquishing CPU, 747
- resource limit for priority, 764
- round-robin policy (SCHED_RR), 739
- handling, 460–463
- sending, 458–460
- used by NPTL, 693
- reboot(), 801
- recursive bind mount, 273–274
- recursive resolution, DNS, 1211
- recv(), 426, 673, 1259–1260
- interrupted by signal handler, 444
- prototype, 1259
- recvfrom(), 426, 673, 1160–1161
- diagram, 1160
- interrupted by signal handler, 444
- prototype, 1161
- recvmmsg(), 1284
- recvmsg(), 426, 673, 1284
- interrupted by signal handler, 444
- reentrancy, 556
- region_locking.c, 1134
- code of implementation, 1134–1135
- regular file, 27, 282
- poll() on, 1342
- select() on, 1342
- Reiser, J., xli, 4
- Reiserfs file system, 260
- tail packing, 260, 307
- releaseSem(), 989–991
- code of implementation, 991
- reliable signal, 390
- prototype, 1041
- remove(), 286, 345, 352
- prototype, 352
- removexattr(), 286, 316, 345
- prototype, 316
- rename(), 286, 300, 345, 348–349, 426, 800
- prototype, 348
- renameat(), 365, 426
- renice command, 735
- reserveSem(), 989–990
- code of implementation, 990
- resource limit on size of, 763
- resource limit, 34, 614, 755–764, 801
- NPTL nonconformance, 694
- unrepresentable, 759–760
- resource usage, 552, 614, 753–755
- Ressler, S., 1441
- retransmission timeout (RTO), 1191
- rewinddir(), 354
- prototype, 354
- RFC 768, 1194
- RFC 791, 1193
- RFC 793, 1194, 1270, 1283
- RFC 862, 1240
- RFC 950, 1193
- RFC 993, 1267
- RFC 1014, 1200
- RFC 1122, 1194, 1274
- RFC 1123, 1194
- RFC 1305, 1442
- RFC 1323, 1194
- RFC 1819, 1184
- RFC 2018, 1194
- RFC 2460, 1194, 1203
- RFC 2581, 1194
- RFC 2861, 1194
- RFC 2883, 1194
- RFC 2988, 1194
- RFC 3168, 1194, 1267
- RFC 3257, 1286
- RFC 3286, 1286
- RFC 3390, 1194
- RFC 3493, 1194, 1203, 1213
- RFC 3513, 1194
- RFC 3542, 1194
- RFC 3697, 1203
- RFC 4007, 1203
- RFC 4219, 1188
- RFC 4291, 1203
- RFC 4336, 1286
- RFC 4340, 1286
- RFC 4960, 1286
- RFC Editor, 1193
- Richarte, G., 1437
- Ritchie, D.M., 2, 4, 1440, 1442, 1443
- rlim_t data type, 65, 756, 759–760
- definition, 756
- RLIMIT_AS resource limit, 757, 760, 1039
- RLIMIT_NICE resource limit, 736, 757, 762
- rmdir(), 286, 300, 345, 351, 426, 800
- prototype, 351
- Robbins, K.A., 1443
- Robbins, S., 1443
- Robins, A.V., xli, xlii
- Rochkind, M.J., 1443
- Romanow, J., 1194
- root directory, 27, 340
- of a process, 225, 367–368, 604, 613
- Rosen (2005), 6, 1443
- Rosen, L., 1443
- Rothwell, S., xli
- router, 1180
- RTLD_LAZY constant, 861
- RTLD_NEXT constant, 864
- RTLD_NOW constant, 861
- RTO (retransmission timeout), 1191
- Rubini, A., 1438
- Rudoff, A.M., 1421, 1444
- RUN_LVL constant, 820, 822
- rusage structure, 552, 753, 754–755
- definition, 754
- rusage.c, 1432
- rusage_wait.c, 1432
- Rusling, D., 255
- Russell, R., 1439
INDEX The Linux Programming Interface - ! Michael Kerrisk.txt
S
- S_IFBLK constant, 282
- S_IFCHR constant, 282
- S_IFDIR constant, 282
- S_IFLNK constant, 282
- S_IFMT constant, 281
- S_IFREG constant, 282
- S_IRGRP constant, 295
- S_IROTH constant, 295
- S_IRWXG constant, 295
- S_IRWXO constant, 295
- S_IRWXU constant, 295
- S_ISBLK(), 282
- S_ISCHR(), 282
- S_ISDIR(), 282
- S_ISFIFO(), 282
- S_ISGID constant, 295, 351
- S_ISLNK(), 282
- S_ISREG(), 282
- S_ISSOCK(), 282
- S_ISUID constant, 295, 351
- S_ISVTX constant, 295, 300, 351
- S_IWGRP constant, 295
- S_IWOTH constant, 295
- S_IXGRP constant, 295
- S_IXOTH constant, 295
- sa command, 591
- sa_family_t data type, 65, 1154, 1165, 1202, 1203, 1204
- SA_NOCLDWAIT constant, 417, 560
- SA_NOMASK constant, 417
- SA_ONESHOT constant, 417
- SA_SIGINFO constant, 417, 437–442, 458, 1352, 1353
- Salzman, P.J., 1442
- Santos, J., 1441
- Sarolahti, P., 1443
- Sastry, N., 1438
- sbrk(), 140, 761
- prototype, 140
- RLIMIT_AS resource limit and, 760
- Scalmazzi, C., xlii
- scandir(), 354
- scatter input, 100
- scatter-gather I/O, 99–102
- SCHED_BATCH constant, 740, 742
- prototype, 741
- sched_get_priority_min(), 740–741
- prototype, 741
- sched_getaffinity(), 750
- prototype, 750
- sched_getparam(), 744
- prototype, 744
- prototype, 744
- SCHED_IDLE constant, 740, 742
- SCHED_OTHER constant, 738, 742
- sched_param structure, 741–742, 744
- definition, 741
- SCHED_RR constant, 739, 742, 801
- sched_rr_get_interval(), 747
- prototype, 747
- sched_set.c, 743
- sched_setaffinity(), 749, 801
- prototype, 749
- sched_setparam(), 742, 801
- prototype, 742
- prototype, 741
- RLIMIT_NICE resource limit and, 762
- sched_view.c, 745
- sched_yield(), 747
- prototype, 747
- Schröder, M., xli
- Schüpbach, W.M.M., xlii
- Schwaiger, M., xli
- Schwartz, A., 1439
- scm_cred_recv.c, 1285
- scm_cred_send.c, 1285
- SCM_CREDENTIALS constant, 800, 801
- scm_rights_recv.c, 1284
- screen command, 1379
- script, 572
- diagram, 1390
- implementation, 1390–1394
- script.c, 1392
- search permission, 29
- SECBIT_KEEP_CAPS constant, 615, 812, 813, 816
- secure programming, 783–796, 1437, 1445
- SEEK_CUR constant, 82, 1126
- SEEK_END constant, 82, 1126
- seek_io.c, 84
- SEEK_SET constant, 82, 1126
- segment (virtual memory), 115
- SEGV_ACCERR constant, 441
- SEGV_MAPERR constant, 441
- select(), 426, 673, 1331–1334, 1389, 1439
- comparison with poll(), 1344–1345
- interrupted by signal handler, 444
- performance, 1365
- problems with, 1346
- prototype, 1331
- select_mq.c, 1436
- SEM_A constant, 923
- sem_close(), 1058, 1093
- prototype, 1093
- sem_destroy(), 1058, 1102–1103
- prototype, 1103
- SEM_FAILED constant, 1090, 1091
- sem_getvalue(), 1058, 1097
- prototype, 1097
- SEM_INFO constant, 952, 993
- sem_init(), 1058, 1100–1101
- prototype, 1100
- sem_open(), 1058, 1090–1091
- prototype, 1090
- sem_post(), 426, 1058, 1096
- prototype, 1096
- SEM_R constant, 923
- SEM_STAT constant, 952
- sem_t data type, 882, 1058, 1059, 1090, 1091, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1101, 1103
- sem_timedwait(), 673, 1095–1096
- interrupted by signal handler, 444
- prototype, 1096
- sem_trywait(), 1095
- prototype, 1095
- SEM_UNDO constant, 986–988
- sem_unlink(), 1058, 1093
- prototype, 1093
- sem_wait(), 673, 1058, 1094–1095
- interrupted by signal handler, 444
- prototype, 1094
- SEMAEM limit, 991, 992
- sembuf structure, 978, 979, 980
- definition, 979
- semctl(), 922, 969–972
- prototype, 969
- semget(), 922, 969, 991
- prototype, 969
- semid_ds structure, 922, 970, 971, 972–973, 976
- definition, 972
- seminfo structure, 970, 992, 993
- SEMMNI limit, 991, 992
- SEMMNS limit, 991, 992
- SEMMNU limit, 991
- SEMMSL limit, 991, 992
- semncnt value, 972, 974, 985
- semop(), 922, 971, 972, 973, 978–980, 991
- interrupted by signal handler, 444
- prototype, 978
- SEMOPM limit, 991, 992
- sempid value, 972, 985
- semtimedop(), 980
- interrupted by signal handler, 444
- prototype, 980
- SEMUME limit, 991
- semun union, 969, 970
- definition, 970
- semun.h, 970
- SEMVMX limit, 988, 991, 992
- semzcnt value, 972, 974, 985
- send(), 426, 673, 1259–1260
- interrupted by signal handler, 444
- prototype, 1259
- diagram, 1261
- prototype, 1261
- interrupted by signal handler, 444
- sendto(), 426, 673, 1160–1161
- diagram, 1160
- interrupted by signal handler, 444
- prototype, 1161
- definition, 1234
- server, 40
- affinity, 1247
- design, 1239–1252
- farm, 1247
- pool, 1246
- session, 39, 700, 704–706
- diagram, 701
- leader, 39, 700, 705
- set_mempolicy(), 615
- set_thread_area(), 607, 692
- SETALL constant, 971, 972, 973, 987
- setbuf(), 238, 532
- prototype, 238
- prototype, 238
- setdomainname(), 229, 801
- setegid(), 174–175, 181, 785, 800
- prototype, 174
- setenv(), 128–130, 657, 1426
- prototype, 128
- setenv.c, 1426
- seteuid(), 174–175, 181, 784, 801
- prototype, 174
- setfattr command, 312
- setfsgid(), 178, 181, 800
- prototype, 178
- setfsuid(), 178, 181, 801
- prototype, 178
- setgid(), 173–174, 181, 426, 786, 800
- prototype, 173
- setgrent(), 161, 657
- dropping and reacquiring privileges, 784
- dropping privileges permanently, 785
- prototype, 179
- setitimer(), 16, 390, 392, 395, 479–481, 485, 486, 488, 691, 694
- prototype, 480
- setjmp(),131–135
- prototype, 132
- setjmp_vars.c, 136
- setkey(), 657
- prototype, 203
- prototype, 781
- setpgid(), 426, 691, 693, 702–704
- prototype, 702
- setpgrp(), 704
- setpriority(), 691, 735–736, 801
- prototype, 735
- setpwent(), 160–161, 657
- prototype, 161
- setregid(), 175–176, 181, 800
- prototype, 175
- setresgid(), 177–178, 181, 800
- prototype, 177
- setresuid(), 177–178, 181, 801
- prototype, 177
- setreuid(), 175–176, 181, 786, 801
- prototype, 175
- setrlimit(), 755–757, 801
- prototype, 756
- setrlimit64(), 105
- setsid(), 426, 691, 693, 705, 768, 1377
- prototype, 705
- prototype, 1278
- setspent(), 161
- prototype, 161
- diagram, 188
- prototype, 204
- setuid(),173–174, 181, 426, 801
- prototype, 173
- dropping and reacquiring privileges, 784
- dropping privileges permanently, 785
- setutxent(), 657, 821
- prototype, 821
- SETVAL constant, 971, 972, 973, 987
- setvbuf(), 237–238, 532
- prototype, 237
- setxattr(), 286, 314–315, 329, 345
- prototype, 314
- sh (Bourne shell), 25
- retrieving records from, 161–162, 164–165
- shared library, 35, 1439
- compatibility, 850
- controlling symbol visibility, 867–870
- creating, 837–838, 841–842
- diagram, 842
- installing, 847–849
- interdependencies
- diagram, 852
- major version, 844
- minor version, 844
- names, 846–848
- diagram, 846
- overview, 836–837
- preloading, 873–874
- soname, 840–843, 846–847
- upgrading, 850–851
- using, 839–840
- shell, 24–25
- SHELL environment variable, 125, 154
- SHM_DEST constant, 1013
- SHM_HUGETLB constant, 800, 999
- SHM_INFO constant, 952, 1015
- shm_info structure, 1015
- shm_open(), 801, 1058, 1109–1110
- prototype, 1109
- SHM_R constant, 923
- SHM_RDONLY constant, 1000, 1001
- SHM_REMAP constant, 1000, 1001
- SHM_RND constant, 999, 1001
- SHM_STAT constant, 952
- shm_unlink(), 1058, 1114
- prototype, 1114
- SHM_W constant, 923
- SHMALL limit, 1014, 1015
- shmat(), 922, 999–1001, 1013, 1014
- prototype, 999
- RLIMIT_AS resource limit and, 760
- shmatt_t data type, 65, 1012, 1014
- shmctl(), 922, 1011–1012
- prototype, 1011
- shmdt(), 922, 1000–1001, 1013, 1014
- prototype, 1001
- shmget(), 922, 998–999, 1014
- prototype, 998
- shmid_ds structure, 922, 1011, 1012–1013
- definition, 1012
- shminfo structure, 1015
- SHMLBA constant, 999, 1001
- SHMMIN limit, 1014
- SHMMNI limit, 1014, 1015
- SHMSEG limit, 1014
- show_time.c, 199
- Shukla, A., 1439
- SHUT_RD constant, 1256, 1273
- SHUT_RDWR constant, 1256, 1273
- SHUT_WR constant, 1256, 1273
- shutdown(), 426, 1256–1257
- prototype, 1256
- SI_MESGQ constant, 441, 1079
- SI_SIGIO constant, 440, 441
- SI_TKILL constant, 441
- SIG_DFL constant, 398, 412, 416, 578
- SIG_ERR constant, 397, 398, 456
- SIG_HOLD constant, 475
- SIG_IGN constant, 398, 412, 416, 419, 578
- sig_receiver.c, 414, 419
- sig_sender.c, 412
- SIG_SETMASK constant, 410
- SIGABRT signal, 390, 392, 396, 433
- definition, 416, 437
- prototype, 416
- sigaddset(), 407, 426
- prototype, 407
- SIGALRM signal, 390, 396, 480, 484, 486, 488
- sigaltstack(), 417, 434–435, 578, 691, 693
- prototype, 434
- sigandset(), 408
- prototype, 408
- prototype, 476
- SIGBUS signal, 390, 396, 439, 440, 441, 453, 683, 1021, 1030
- correct handling of, 452
- diagram, 1030
- SIGCHLD signal, 390, 391, 396, 440, 441, 514, 545, 551, 555–561, 583, 590, 605, 609, 697, 717, 755, 1431
- contrasted with System V SIGCLD, 561
- diagram, 515
- disabling generation for stopped child processes, 417
- handling, 555–559
- ignoring, 559–561
- SIGCLD signal, 391, 561
- SIGCONT signal, 391, 396, 450, 489, 544, 545, 546, 550, 559, 717, 718, 720, 727
- diagram, 717
- establishing handler for, 478
- sigdelset(), 407, 426
- prototype, 407
- prototype, 407
- SIGEMT signal, 391, 396, 397, 453
- SIGEV_NONE constant, 496, 1079
- definition, 496, 1079
- sigfillset(), 407, 426
- prototype, 407
- SIGFPE signal, 391, 396, 439, 440, 441, 453, 683
- correct handling of, 452
- sighold(), 475
- prototype, 475
- sent on closure of master side of pseudoterminal, 1388
- sigignore(), 475–476
- prototype, 475
- SIGILL signal, 391, 396, 439, 440, 441, 453, 683
- correct handling of, 452
- SIGINFO signal, 391, 1299
- siginfo_t structure, 65, 437, 438–442, 460, 468, 471, 472, 499–500, 550, 551–552, 1079, 1353–1354
- definition, 438
- SIGINT signal, 392, 396, 451, 583, 700, 720, 725, 1296, 1297, 1302, 1304
- siginterrupt(), 16, 419, 444–445
- prototype, 445
- siginterrupt.c, 1429
- SIGIO signal, 392, 396, 397, 440, 441, 1347
- SIGIOT signal, 392
- prototype, 408
- sigismember(), 407, 426
- prototype, 407
- SIGKILL signal, 392, 393, 396, 411, 450, 761, 764, 772, 1040
- prototype, 430
- SIGLOST signal, 392
- sigmask(), 476–477
- prototype, 476
- sigmask_longjmp.c, 432
- signal, 37, 387–478
- accepting, 468
- asynchronous generation, 453
- blocking, 410–411
- broadcast, 402
- caught, 389
- delivery, 388
- diagram, 399, 454
- disposition, 389, 613
- changing, 397–398, 416–417
- default, 389
- generation, 388
- handler. See signal handler
- hardware-generated, 452
- ignored, 389, 398
- job-control, 717
- mask, 38, 388, 410, 578, 613, 683
- names (descriptions), 406
- pending, 38, 388, 389, 411–415, 578, 613, 683
- diagram, 403
- queuing, 412–414, 422, 456, 457
- reading via a file descriptor, 471–474
- reliable, 390, 455
- sending, 401–405
- synchronous generation, 453
- unreliable, 454
- used for IPC, 474
- used for synchronization, 527–529
- waiting for, 418, 464–471
- signal catcher. See signal handler
- signal handler, 38, 389, 398–401, 421–446
- design, 422–428
- diagram, 399, 454
- terminating, 428–433
- use of errno within, 427
- signal(), 397–398, 426, 604
- code of implementation, 455
- portability problems, 454–456
- prototype, 397
- System V, 475
- signal.c, 455
- prototype, 471
- definition, 472
- signalfd_sigval.c, 473
- sigorset(), 408
- prototype, 408
- sigpause(), 426, 475–477, 673, 674
- sigpending(), 411–412, 426, 683
- prototype, 411
- SIGPOLL signal, 392, 441
- sigprocmask(), 410–411, 426, 684
- prototype, 410
- SIGPROF signal, 392, 396, 480
- SIGPWR signal, 391, 392, 396
- prototype, 458
- SIGQUIT signal, 393, 396, 451, 583, 700, 725, 1296, 1298
- sigrelse(), 475
- prototype, 475
- SIGRTMIN constant, 457
- SIGSEGV signal, 120, 140, 146, 151, 393, 396, 439, 440, 441, 453, 523, 683, 764, 1000, 1021, 1030, 1046, 1051
- correct handling of, 452
- diagram, 1029, 1030
- sigset(), 426, 475
- prototype, 475
- sigset_t data type, 65, 407, 408, 410, 411, 416, 437, 465, 468, 471, 684, 685, 1369
- prototype, 430
- sigsetmask(), 476–477
- prototype, 476
- SIGSTKFLT signal, 393, 396
- SIGSTKSZ constant, 435
- diagram, 717
- sigsuspend(), 426, 465, 673
- prototype, 465
- SIGSYS signal, 393, 396
- prototype, 471
- SIGTRAP signal, 394, 396, 442
- SIGTSTP signal, 394, 396, 445, 450, 451, 700, 715, 717, 720, 725, 790, 1296, 1299, 1312
- diagram, 717
- handling within applications, 722
- orphaned process group and, 730
- SIGTTIN signal, 394, 396, 445, 450, 451, 717, 718, 725
- diagram, 717
- orphaned process group and, 730
- SIGTTOU signal, 394, 396, 445, 450, 451, 717, 718, 725, 1293, 1303
- diagram, 717
- orphaned process group and, 730
- SIGUNUSED signal, 394
- SIGURG signal, 394, 396, 397, 1283
- sigval union, 459, 496, 1078
- sigval_t data type, 459
- sigvec structure, 476
- definition, 476
- sigvec(), 476
- prototype, 476
- SIGVTALRM signal, 395, 396, 480
- sigwait(), 685–686, 673
- prototype, 685
- sigwaitinfo(), 468, 673
- prototype, 468
- SIGWINCH signal, 395, 396, 1319, 1320, 1395
- SIGXFSZ signal, 395, 396, 761
- simple_pipe.c, 896
- simple_system.c, 582
- simple_thread.c, 626
- Single UNIX Specification (SUS), 13
- version 2 (SUSv2), 13, 17
- version 3 (SUSv3), 13–15, 17, 1440
- Technical Corrigenda, 14
- version 4 (SUSv4), 15–17
- SIOCGPGRP constant, 1350
- SIOCSPGRP constant, 1350
- sleep(), 426, 487–488, 673
- interrupted by signal handler, 444
- prototype, 488
- sleeping, 487–494
- high-resolution, 488–491, 493–494
- Smith, M., xliii
- Snader (2000), 1235, 1275, 1443
- Snader, J.C., xlii, 1443
- SO_RCVBUF constant, 1192
- SO_SNDBUF constant, 1171
- definition, 1154
- definition, 1202
- definition, 1203
- definition, 1204
- definition, 1165
- socket, 282, 392, 883, 1149–1163
- accepting a connection, 1157
- active, 1155
- asynchronous error, 1254, 1351, 1352
- broadcasting, 800, 1282
- connection termination, 1159
- connectionless, 1152
- connection-oriented, 1152
- creating, 1153
- datagram, 1152, 1159–1162
- domain, 1150
- half-close, 1256
- identified by 4-tuple, 1280
- I/O system calls, 1259–1260
- listening for connections, 1156
- local, 1152
- multicasting, 800, 1282
- options, 1278–1279
- pair, 1174
- passing credentials via, 800, 801, 1284–1285
- passing file descriptor via, 1284
- passive, 1155
- peer, 1152
- pending connection, 1156
- poll() on, 1343
- raw, 800, 1184
- diagram, 1190
- remote, 1152
- select() on, 1343
- diagram, 1190
- sequenced-packet, 1285
- stream, 1151, 1155–1159
- I/O, 1159
- type, 1151
- socket permissions, 1174
- socket(), 426, 801, 1150, 1152, 1153
- diagram, 1156, 1160
- prototype, 1153
- socketpair(), 426, 1174–1175
- prototype, 1175
- Solaris, 4
- soname, shared library, 840–843, 846–847
- Spafford, G., 1439
- spawn, 514
- Spec 1170, 13, 17
- splice(), 1262
- Spraul, M., xli
- spurious readiness notification, 1330
- spurious wake-up, 648
- spwd structure, 161, 162
- definition, 162
- SS_DISABLE constant, 435
- stack, 31, 116, 121–122, 612, 764, 1051
- diagram, 122
- direction of growth, 121
- resource limit on size of, 764
- unwinding, 133
- stack crashing, 792
- Stallman, R.M., 5, 6, 11, 20, 1445
- definition, 280
- stat(), 106, 279–283, 325, 345, 426, 907, 1428
- prototype, 279
- stat64 structure, 105
- stat64(), 105
- statfs(), 277, 345
- function reentrancy and, 423
- statvfs structure, 276–277
- definition, 276
- statvfs(), 276–277, 345
- prototype, 276
- stdio buffers, 237–239
- diagram, 244
- fork() and, 537–538
- stdio library, 30
- Steele, G.L., 1440
- Stevens, D.L., 1438
- Stevens, W.R., xlii, 1194, 1421, 1443, 1444, 1445
- Stewart (2001), 1286, 1444
- Stewart, R.R., 1444
- sticky permission bit, 294, 295, 300, 800
- stime(), 204, 801
- diagram, 188
- St. Laurent (2004), 6, 1443
- St. Laurent, A.M., 1443
- Stone (2000), 1190, 1444
- Stone, J., 1444
- Strang, J., 1442, 1444
- strcoll(), 202
- strerror(), 50, 657
- prototype, 50
- strerror.c, 664
- strerror_r(), 658
- strerror_tls.c, 669
- strerror_tsd.c, 666
- strftime(), 193, 194, 198, 203
- diagram, 188
- prototype, 193
- strip command, 834
- strlcpy(), 793
- strncpy(), 793
- strptime(), 195–196
- diagram, 188
- prototype, 195
- strsignal(), 15, 406, 656
- prototype, 406
- strtime.c, 197
- strtok(), 657
- strtok_r(), 658
- strxfrm(), 202
- stty command, 1294–1295
- subnet, 1179
- diagram, 1187
- Suisted, R., xlii
- SunOS, 4
- SUS. See Single UNIX Specification (SUS)
- svmsg_info.c, 952
- svmsg_ls.c, 953
- svmsg_rm.c, 947
- SVR4 (System V Release 4), 4, 17, 1440
- svsem_bad_init.c, 976
- svsem_create.c, 984
- svsem_demo.c, 968
- svsem_good_init.c, 977
- svsem_info.c, 993
- svsem_mon.c, 973
- svsem_op.c, 982
- svsem_rm.c, 985
- svsem_setall.c, 974
- svshm_attach.c, 1007
- svshm_create.c, 1007
- svshm_info.c, 1015
- svshm_mon.c, 1434
- svshm_rm.c, 1007
- svshm_xfr.h, 1002
- svshm_xfr_reader.c, 1005
- svshm_xfr_writer.c, 1003
- swap area, 119, 254
- swapcontext(), 442
- swapoff(), 254, 345, 801
- swapon(), 254, 345, 801
- Sweet, M., 1322
- Swift, J., 1198
- Swigg, T., xli
- changing ownership of, 292
- creating, 342, 349
- dangling, 28, 342, 349, 360
- diagram, 343
- following (dereferencing), 28
- interpretation by system calls, 344
- permissions and ownership, 344
- reading contents of, 349
- representation in file system, 342
- symlink(), 286, 349, 426
- prototype, 349
- symlinkat(), 365, 426
- sync(), 241, 242, 1032
- prototype, 241
- synchronous I/O, 241–243
- prototype, 215
- sysfs file system, 252, 1442
- syslog(), 776, 779–780
- diagram, 775
- prototype, 779
- syslog(2) system call, 776, 801
- diagram, 775
- system call, 23, 43–46
- diagram, 46
- interrupted by signal handler, 442–445
- restarting, 442–445
- setting timeout on, 486–487
- retrieving, 215–217
- retrieving, 215–217
- system programming, xxxiii
- System V, 4
- identifier, 923, 931
- key, 64, 923, 925–927
- limits, 935–936
- diagram, 932
- creating, 923–924
- deleting, 924
- listing, 934–935
- permissions, 800, 927–929
- persistence, 924
- removing, 934
- portability, 884, 1061
- creating, 938–940
- deleting, 947
- disadvantages, 961–962
- limits, 950–951
- messages, 940
- receiving, 943–946
- nonblocking, 943
- sending, 940–942
- nonblocking, 941
- System V Release 4 (SVR4), 4, 17, 1440
- adjustment on process termination, 533
- creating, 969
- deleting, 971
- disadvantages, 993
- initialization, 971, 974, 975–978
- limits, 991–993
- starvation, 986
- undo value (semadj), 533, 607, 614, 619, 691, 693, 986–988, 991
- attaching, 999
- creating, 998–999
- deleting, 1011
- detaching, 1000
- on process termination, 533
- limits, 1014–1015
- system(), 582–588, 656, 673
- code of implementation, 582–583, 586–587
- diagram, 584
- implementation, 582–588
- prototype, 579
- system.c, 586
- sysv_signal(), 456
- prototype, 456
INDEX The Linux Programming Interface - ! Michael Kerrisk.txt
T
- t_chown.c, 293
- t_clone.c, 601
- t_dirbasename.c, 371
- t_execl.c, 571
- t_execle.c, 570
- t_execlp.c, 570
- t_execve.c, 566
- t_flock.c, 1121
- t_fork.c, 517
- t_ftok.c, 1433
- t_getopt.c, 1408
- t_kill.c, 405
- t_mmap.c, 1028
- t_mount.c, 268
- t_mprotect.c, 1046
- t_nanosleep.c, 490
- t_readv.c, 101
- t_sched_getaffinity.c, 750
- t_sched_setaffinity.c, 750
- t_select.c, 1334
- t_setpriority.c, 736
- t_setsid.c, 706
- t_sigaltstack.c, 436
- t_sigqueue.c, 459, 461
- t_sigsuspend.c, 466
- t_sigwaitinfo.c, 470
- t_stat.c, 284
- t_statfs.c, 277
- t_statvfs.c, 277
- t_sysconf.c, 216
- t_syslog.c, 1432
- t_system.c, 581
- t_umask.c, 302
- t_uname.c, 230
- t_unlink.c, 347
- t_utimes.c, 288
- t_vfork.c, 524
- TAB0 constant, 1302
- TAB1 constant, 1302
- TAB2 constant, 1302
- TAB3 constant, 1302, 1303
- TABDLY constant, 1302, 1303
- Tanenbaum, A.S., 6, 1444
- Taylor, I.L., 1444
- tcdrain(), 426, 673, 718, 727, 1293, 1316–1317
- prototype, 1318
- tcflow(), 426, 718, 727, 1293, 1316–1317
- prototype, 1318
- tcflush(), 426, 718, 727, 1293, 1316–1318
- prototype, 1318
- tcgetattr(), 426, 1291–1292
- prototype, 1291
- tcgetpgrp(), 426, 708–709
- prototype, 708
- tcgetsid(), 706
- TCIFLUSH constant, 1318
- TCIOFF constant, 1319
- TCIOFLUSH constant, 1318
- TCION constant, 1319
- TCOFLUSH constant, 1318
- TCOOFF constant, 1319
- TCOON constant, 1319
- diagram, 1268
- checksum, 1267
- connection establishment, 1191, 1270–1272
- diagram, 1272
- connection termination, 1272–1273
- diagram, 1273
- delayed ACK, 1191
- diagram, 1181
- endpoint, 1190
- options, 1268
- receiving, 1191
- retransmission, 1191, 1194
- segment, 1191
- format, 1266–1268
- sending, 1191
- sequence number, 1191, 1266, 1268
- three-way handshake, 1270
- diagram, 1272
- timeouts, 1191
- vs. UDP, 1282–1283
- urgent pointer, 1268, 1283
- TCP/IP, 1179–1195, 1438, 1440, 1441, 1443, 1444, 1445
- TCSADRAIN constant, 1293
- TCSAFLUSH constant, 1293
- TCSANOW constant, 1293
- prototype, 1318
- tcsetattr(), 426, 718, 727, 1291–1293
- prototype, 1291
- tcsetpgrp(), 426, 708–709, 718, 727
- prototype, 708
- tee command, 87, 908
- tee(), 1262
- tell(), 82
- telldir(), 355
- tempnam(), 109
- terminal, 392, 1289–1323
- disabling echoing of input, 1306
- disconnect, 709
- flags, 1301–1306
- foreground process group. See foreground process group
- identification, 1321
- flushing, 1318
- flushing, 1318
- poll() on, 1342
- resuming output, 1296, 1319
- select() on, 1342
- termination signal, 599, 605
- definition, 1292
- test_become_daemon.c, 771
- tgkill(), 441, 684
- Thomas, M., 1194
- Thompson, K.L., 2, 4, 1443
- Thomson, J., 1194
- thread, 38, 225, 617–697
- attributes, 623, 628
- compared to process, 629
- creating, 609, 622–623, 626–627
- dealing with asynchronous signals, 685
- detached, 627, 628
- exec() and, 673, 686
- exit() and, 687
- fork() and, 673, 686
- implementation models, 687–689
- interactions with signals, 682–683
- joinable, 627
- joining, 625–627
- Linux implementation, 689–699
- stack, 681–682
- termination, 623–624
- testing for, 675
- diagram, 605
- diagram, 605
- comparing IDs, 624
- thread_incr.c, 632
- thread_incr_mutex.c, 636
- thread_incr_psem.c, 1101
- implementation, 662–663
- three-way handshake, TCP, 1270
- diagram, 1272
- Tilk, K., xlii
- time slice, 733
- time(), 187, 426
- diagram, 188
- prototype, 187
- assassination, 1275
- high-resolution, 485
- profiling, 392, 480
- real, 390, 480
- virtual, 395, 480
- timer overrun, 495, 503–504, 505
- prototype, 495
- prototype, 499
- timer_getoverrun(), 426
- prototype, 504
- prototype, 499
- prototype, 498
- prototype, 508
- prototype, 509
- prototype, 508
- times(), 206–207, 210, 426, 560, 619, 691, 694, 755
- prototype, 206
- definition, 290, 471, 488, 498, 747
- definition, 186, 480, 1333
- specifying to a program, 198–200
- TIOCCONS constant, 801
- TIOCGPGRP constant, 709
- TIOCGSID constant, 706
- TIOCGWINSZ constant, 1319, 1392, 1395
- TIOCNOTTY constant, 692, 707
- TIOCPKT constant, 1389
- TIOCSCTTY constant, 707, 1385
- TIOCSPGRP constant, 709
- TIOCSWINSZ constant, 1320, 1395
- tkill(), 441
- tlpi_hdr.h, 51
- tm structure, 188, 189, 190, 191, 193, 195, 196
- definition, 189
- prototype, 109
- tmpfs file system, 274–275, 1009, 1090, 1108
- tmpnam(), 109, 656
- definition, 206
- Todino-Gonguet, G., 1442
- Törring, J.T., xli
- Torvalds, L.B., 2, 6, 18, 20, 1444
- translation look-aside buffer, 527, 999, 1027
- diagram, 1181
- TRAP_BRANCH constant, 442
- TRAP_BRKPT constant, 442
- TRAP_HWBKPT constant, 442
- Troan, E.W., 1440
- Tromey, T., 1444
- Tru64 UNIX, 5
- truncate(), 103, 286, 345, 395, 1139, 1142
- prototype, 103
- truncate64(), 105
- Tsafrir, D., 1444
- tty, 1289
- tty_functions.c, 1310
- ttyname(), 657, 1321
- prototype, 1321
- ttyname.c, 1436
- ttyname_r(), 658, 1321
- ttySetCbreak(), 1310
- code of implementation, 1310–1311
- ttySetRaw(), 1310
- code of implementation, 1311
- Tweedie, S., xli
- TZ environment variable, 198
- TZDIR environment variable, 198
- tzset(), 198
U
- u_int16_t data type, 593, 598
- u_int32_t data type, 593, 598
- uClibc, 47
- ud_ucase_cl.c, 1173
- ud_ucase_sv.c, 1172
- checksum, 1189
- diagram, 1181
- vs. TCP, 1282–1283
- ugid_functions.c, 159
- UID (user ID), 26, 153
- uid_t data type, 65, 157, 173, 174, 175, 177, 178, 280, 292, 330, 438, 927
- uint8_t data type, 1202, 1203
- uint16_t data type, 1199
- uint32_t data type, 377, 379, 472, 1199, 1203, 1204, 1357
- Ultrix, 4
- umask(), 301, 309, 426, 604. See also process, umask
- prototype, 301
- umount(), 269–270, 607, 801
- prototype, 269
- umount2(), 270
- prototype, 270
- uname(), 229, 426
- prototype, 229
- unbuffer.c, 1436
- universality of I/O, 29, 72
- UNIX, 1, 1437, 1441, 1444
- editions, 3
- history, 2–5, 1442, 1443
- standards, 10–19
- UNIX 03, 14, 17
- UNIX 95, 13, 17
- UNIX 98, 13, 17
- UNIX International, 13
- unlink(), 109, 286, 300, 345, 346, 426, 800, 1145, 1146
- prototype, 346
- unlinkat(), 365, 426
- unlockpt(), 1380, 1382
- prototype, 1382
- unprivileged process, 33
- unsetenv(), 129, 657, 1426
- prototype, 129
- unshare(), 603, 801
- unspecified (in standard description), 15
- updwtmpx(), 827
- prototype, 827
- us_xfr.h, 1167
- us_xfr_cl.c, 1169
- us_xfr_sv.c, 1168
- us_xfr_v2_cl.c, 1435
- us_xfr_v2_sv.c, 1435
- usageErr(), 53–54
- code of implementation, 56
- prototype, 54
- usageError(), 54
- uselib(), 345
- user ID, 26, 153
- user mode, 23, 44
- user space, 23
- code of implementation, 159–160
- code of implementation, 159
- USL (UNIX System Laboratories), 8
- usleep(), 673, 674
- utimbuf structure, 287
- definition, 287
- utime(), 285, 286, 287–288, 345, 426, 800
- prototype, 287
- utimensat(), 15, 286, 289–290, 365, 426
- prototype, 289
- utimes(), 286, 345, 288, 426
- prototype, 288
- retrieving information from, 821
- updating, 825
- definition, 819
- prototype, 823
- definition, 229
V
- Vahalia, U., 1444
- van der Linden, P., 1444
- vanilla kernel, 234
- Vargas, B.L., xli, xliii
- variadic function, 1413
- Vaughan, G.V., 1444
- VEOF constant, 1296, 1309
- VEOL constant, 1296, 1309
- VEOL2 constant, 1296
- vfork(), 16, 523–525, 530, 609
- prototype, 523
- speed, 610
- VFS (virtual file system), 259
- diagram, 259
- vhangup(), 801
- Viega, J., 1445
- VINTR constant, 1296
- Viro, A., 1445
- virtual address space, 120
- diagram, 120
- virtual file system (VFS), 259
- diagram, 259
- resource limit on, 760
- unified, 1032
- virtual memory management, 22, 118–121, 1440
- virtualization, 608, 789
- VKILL constant, 1296
- VLNEXT constant, 1296
- VMIN constant, 1307, 1309
- vmsplice(), 1262
- VQUIT constant, 1296
- vsyslog(), 777
W
- W_OK constant, 299
- Wagner, D., 1438, 1444
- wait morphing, 647
- wait(), 32, 426, 514, 541–542, 673, 690
- diagram, 515
- interrupted by signal handler, 443
- prototype, 542
- wait3(), 552–553, 609, 754
- interrupted by signal handler, 443
- prototype, 552
- wait4(), 552–553, 609, 754
- interrupted by signal handler, 443
- prototype, 552
- waitid(), 550–552, 610, 673
- interrupted by signal handler, 443
- prototype, 550
- waitpid(), 426, 544–545, 609, 673
- interrupted by signal handler, 443
- prototype, 544
- wall command, 169
- Wallach, D.S., 1438
- watch descriptor (inotify), 376, 377
- Watson, R.N.M., 1445
- WCOREDUMP(), 546
- wcrtomb(), 656
- wcsrtombs(), 656
- wcstombs(), 657
- Weinberger, P.J., 1437
- WEXITSTATUS(), 546
- Wheeler, D., 795, 857
- who command, 817
- WIFCONTINUED(), 546
- WIFEXITED(), 546
- WIFSIGNALED(), 546
- WIFSTOPPED(), 546
- Wilhelm, S., 1442
- Williams, S., 1445
- definition, 1319
- wireshark command, 1277
- Woodhull, A.S., 1444
- Wright, E.A., xlii
- Wright, G.R., 1445
- write permission, 29, 282, 294, 297
- write(), 70, 80, 286, 395, 426, 673, 800, 1138
- FIFO, 918
- interrupted by signal handler, 443
- pipe, 918
- prototype, 80
- by background job, 394
- by orphaned process group, 730
- writen(), 1254
- code of implementation, 1255
- prototype, 1254
- writev(), 99–100, 102, 286, 673
- interrupted by signal handler, 443
- prototype, 99
- Wronski, M., xli
- wtmp file, 817
- updating, 825
X
- X_OK constant, 299
- XATTR_REPLACE constant, 315
- xattr_view.c, 317
- XBD, 14
- XCU, 14
- XCURSES, 14
- Xen, 789
- XENIX, 5
- XFS file system, 261
- Xie, Q., 1444
- X/Open, 13
- XRAT, 14
- XSH, 14
- XSI extension, 15, 62, 63, 221
Y
- Yourtchenko, A., 1439
Z
Fair Use Sources
© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.