ref: 87288afa5ac476efb3ef1ed40df658427339f13e
dir: /index.ms/
.c 1 .LG .B "Index" .NS .2C .SH .LP .br .br , 121, .br 386, 152 .br 5c, 85 .br 5l, 85 .br 9P, 54, 140, 295 .br file, 297 .br implementation, 305 .br library, 302 .br message handler, 304 .br request, 296, 305 .br security, 328 .br server, 296 .br \f(CW$#*\fP, 159 .br \f(CW$*\fP, 159 .br \f(CW/\fP, 140, 147 .br ] command, 166 .br \f(CW_main\fP, 43 .br \f(CW5c\fP, 20, 319 .br \f(CW5l\fP, 20 .br \f(CW8c\fP, 20 .br \f(CW8l\fP, 20 .br flag \f(CW-o\fP, 20 .br \f(CW8.out\fP, 20 .br partition, 293 .br \f(CW9fs\fP, 120, 122 .br \f(CWrc\fP script, 142, 144 .br messages, 296 .br \f(CW9P2000\fP, 297 .br \f(CW9PANY\fP, 331 .br \f(CW9PSK1\fP, 331 .br \f(CW$\fP address, 173 .br \f(CW!\fP command, 168 .br \f(CW&&\fP command, 169 .br \f(CW||\fP command, 169 .br \f(CW#/\fP device driver, 147 .br \f(CW#|\fP device driver, 199 .br , file descriptor redirection, 88 .br \f(CW#\fP file names, 147 .br , making calls, 123 .br \f(CW--\fP, option, 32 .br \f(CW*\fP pattern, 64 .br \f(CW?\fP pattern, 65 .br , Qid, 298 .SH A .LP .br a process, killing, 45 .br \f(CWabort\fP, 43 .br absolute paths, 13 .br abstract data types, 1 .br abstraction, 1\(en2 .br acceleration, hardware, 270\(en271 .br accept connection, 128 .br \f(CWaccept\fP, 128 .br access .br authorized, 326 .br checking for, 59 .br \f(CWaccess\fP, 59, 82 .br Access control, 329 .br access .br control list, 17 .br control lists, 329 .br sequential, 52 .br time, 315 .br time, file, 60 .br access mode .br \f(CWAEXEC\fP, 59, 82 .br \f(CWAEXIST\fP, 59 .br \f(CWAREAD\fP, 59 .br \f(CWAWRITE\fP, 59 .br account, 4, 18, 329, 342 .br new, 342 .br open, 4 .br student, 194 .br \f(CWacid\fP, 42, 45, 240, 323 .br command, \f(CWlstk\fP, 43 .br command, \f(CWstk\fP, 43 .br \f(CWthreads\fP function, 240 .br ACL, \f2see\fP access control list .br acme commands, 7 .br \f(CWacme\fP, 6, 144 .br pipe command, 101 .br plumbing, 113 .br acquiring window, 274 .br adding .br key, 336 .br partitions, 294 .br address .br construction, 124 .br EOF, 173 .br file, 114 .br local, 124 .br network, 118, 120\(en121 .br pair, 173 .br space, virtual, 29 .br text, 172 .br address, \f(CW$\fP, 173 .br \f(CW/adm/keys\fP, 342 .br \f(CW/adm/users\fP, 197 .br \f(CWaecho.c\fP, 33 .br \f(CWAEXEC\fP access mode, 59, 82 .br \f(CWAEXIST\fP access mode, 59 .br \f(CWafd\fP, 329, 335 .br \f(CWafter.c\fP, 78 .br agent, authentication, 331 .br airport .br application, 216, 247 .br panels, 215, 247 .br alarm .br cancel, 107 .br process, 106 .br \f(CWalarm\fP, 106 .br \f(CWalarm.c\fP, 107 .br allocation, image, 279 .br \f(CWallocimage\fP, 279 .br \f(CWAlt\fP, 257 .br alternate window, 288 .br alternative channel operation, 257 .br \f(CWalts\fP, 257 .br \f(CWamount\fP, 151, 333 .br \f(CWamount_getkey\fP, 336 .br \f(CWamount.c\fP, 334 .br \f(CWaname\fP, 150 .br and, logical, 169 .br announce, 126 .br port, 126 .br \f(CWannounce\fP, 126 .br \f(CWapid\fP, 85, 103 .br append .br only, 56 .br redirection, 93 .br application, airport, 216, 247 .br architecture, 85 .br independent, 59 .br archive, 143, 175 .br compressed, 176 .br extraction, 176 .br file, 65 .br tape, 175 .br \f(CWAREAD\fP access mode, 59 .br \f(CWARGBEGIN\fP, 33 .br \f(CWARGEND\fP, 33 .br \f(CWARGF\fP, 33 .br \f(CWargs\fP \f(CWrc\fP script, 167 .br argument, 10 .br command, 9\(en10 .br option, 33 .br script, 159 .br thread, 239 .br vector, 80 .br arguments .br program, 31 .br script, 87, 167 .br \f(CWargv\fP, 31, 39, 80 .br \f(CWargv0\fP, 33, 80 .br arithmetic .br expression, 86, 161 .br language, 162 .br arm, 20 .br array initializer, 164 .br arrow keys, 263 .br ASCII, 265 .br \f(CWassert\fP, 90 .br asynchronous communication, 102, 104 .br \f(CWatnotify\fP, 104, 259 .br atomic, 79 .br instruction, 207 .br atomic \f(CWwrite\fP, 79 .br attach, 297, 308 .br specifier, 143, 287 .br attribute, plumb message, 115 .br attributes .br file, 59 .br plumb message, 114 .br audio CD, 200 .br \f(CWauth\fP library, 333 .br \f(CWauth_chuid\fP, 341 .br \f(CWauth_freeAI\fP, 334 .br \f(CWauth_login\fP, 341 .br \f(CWauth_proxy\fP, 333 .br \f(CWauth9p\fP, 337 .br \f(CWauthdestroy\fP, 337 .br authentication, 329, 342 .br agent, 331 .br domain, 331 .br domains, 330 .br file, 329, 336 .br file descriptor, 151 .br handling, 336 .br information, 334 .br mount, 151 .br protocol, 330 .br server, 342 .br servers, 330 .br \f(CWAuthInfo\fP, 341 .br \f(CWAuthinfo\fP, 334 .br authorization, 327 .br authorized access, 326 .br \f(CWauthread\fP, 337 .br \f(CWauthsrv\fP, 330, 342 .br \f(CWauthwrite\fP, 337 .br automatic .br layout, 291 .br partitioning, 295 .br \f(CWaux/listen\fP, 131 .br \f(CWaux/vga\fP, 271 .br average process, 194 .br \f(CWAwait\fP, 40 .br \f(CWawait\fP, 84 .br AWK, 189 .br AWK command, \f(CWnext\fP, 195 .br \f(CWawk\fP flag \f(CW-F\fP, 196 .br AWK .br pattern, 191 .br program, 195 .br statement, 190 .br variables, 190 .br AWK script, \f(CWlist\fP, 195 .br \f(CWAWRITE\fP access mode, 59 .br axis, 280 .SH B .LP .br background, 163 .br command, 84, 89 .br backing store, 277 .br backslash, 39, 179 .br backspace, 263 .br backward-compatibility, 2 .br base .br input, 162 .br output, 162 .br \f(CWbc\fP, 162, 171 .br \f(CWbcp.c\fP, 66 .br become \f(CWnone\fP, 340 .br \f(CWbefore.c\fP, 78 .br \f(CWBEGIN\fP pattern, 193 .br \f(CWBflush\fP, 69 .br bidirectional pipe, 96 .br \f(CW/bin\fP, 38, 151 .br \f(CWBIN\fP, 321 .br binary, 85 .br file, 20\(en21, 23, 27, 151 .br \f(CWbind\fP, 142, 144, 150 .br flag \f(CW-a\fP, 148 .br flag \f(CW-b\fP, 148 .br flag \f(CW-c\fP, 150 .br binding, 142 .br \f(CWBinit\fP, 70 .br \f(CWbio\fP, 68 .br \f(CWBiobuf\fP, 68 .br file descriptor, 70 .br flushing, 69 .br termination, 69 .br \f(CWbiocat.c\fP, 70 .br \f(CWbiocp.c\fP, 68 .br \f(CWbio.h\fP, 68 .br BIOS, 270 .br birth, process, 31 .br \f(CWblack\fP, 273 .br \f(CWblack.c\fP, 272 .br blank .br CD, 200 .br screen, 271 .br \f(CWblank\fP, 275 .br \f(CWBlinelen\fP, 70 .br block, file, 67 .br blocked, 41 .br process, 97 .br state, 207 .br board, file descriptor, 107 .br boldface, 210 .br \f(CW/boot\fP, 328 .br boot, 107, 131 .br program, 132 .br \f(CWboot\fP, 132, 328 .br booting, 3, 152, 328 .br \f(CWBopen\fP, 68 .br bottom window, 290 .br boundaries, write, 96, 120 .br bounded buffer, 225, 231 .br \f(CWbox.c\fP, 153 .br branch, multiway, 168 .br \f(CWBrdline\fP, 70, 247 .br \f(CWBrdstr\fP, 70, 247 .br \f(CWBread\fP, 69 .br broadcast, 247 .br \f(CWbroke\fP, 95 .br \f(CWBroken\fP, 95, 192 .br broken, 41 .br pipe, 97 .br process, kill, 95 .br \f(CWbroken\fP, 44 .br bss segment, 30, 45 .br \f(CWBterm\fP, 69 .br buffer, 67 .br bounded, 225, 231 .br flushing, 71 .br shared, 225 .br buffered I/O, 66, 68, 247 .br buffering, channel, 244 .br building things, 318 .br builtin command, 139 .br burn, CD, 200 .br busy waiting, 41, 110, 213 .br button, mouse, 5 .br button-1, mouse, 268, 280 .br button2, mouse, 268 .br button-3, mouse, 113 .br \f(CWBwrite\fP, 69 .SH C .LP .br C declaration, 164 .br \f(CW#c\fP device driver, 152, 262 .br C .br language, 19 .br library, 60 .br program, 19 .br calculator, 86 .br call .br error, system, 35, 59, 81 .br receiving, 128 .br remote procedure, 23 .br system, 22\(en23, 40, 72 .br calls , making, 123 .br cancel, alarm, 107 .br capabilities, 340 .br capability device, 340 .br carriage return, 121 .br carriage-return character, 16 .br case .br conversion, 163 .br insensitive, 185 .br \f(CWcase\fP, 168 .br \f(CWcat\fP, 15, 50, 66, 70 .br \f(CW$CC\fP, 320 .br \f(CW#c/cons\fP, 262 .br \f(CWcd\fP, 13 .br CD .br audio, 200 .br blank, 200 .br burn, 200 .br copy, 201 .br file system, 200 .br write, 175 .br \f(CWcdcopy\fP \f(CWrc\fP script, 201 .br \f(CWcdfs\fP, 200 .br \f(CWcdtmp\fP \f(CWrc\fP script, 86 .br \f(CWcecho.c\fP, 130 .br \f(CWChan\fP, 54, 77, 109, 140\(en141, 298 .br chan, image, 279 .br \f(CWchancreate\fP, 243 .br \f(CWCHANEND\fP, 257 .br \f(CWchanfree\fP, 243 .br change .br current directory, 13 .br identity, 340\(en341 .br permissions, 18 .br uid, 341 .br \f(CWchangeuser\fP, 342 .br channel, 54, 242, 277 .br buffering, 244 .br communication, 242 .br event, 112 .br mouse event, 269 .br operation, alternative, 257 .br operation, simultaneous, 257 .br unbuffered, 245 .br channel .br \f(CWprint\fP, 257 .br \f(CWWaitmsg\fP, 258 .br \f(CWchanprint\fP, 257 .br \f(CWCHANRCV\fP, 257 .br \f(CWCHANSEND\fP, 257 .br character .br carriage-return, 16 .br control, 16 .br echo, 264 .br escape, 10, 39, 179 .br line-feed, 16 .br new-line, 16 .br range, 178 .br range pattern, 65 .br set, 178 .br \f(CWchartorune\fP, 266 .br \f(CWchatty9p\fP, 305 .br \f(CWchdir\fP, 36 .br check, permission, 329 .br checking .br for access, 59 .br program, 323 .br \f(CWchgrp\fP, 62 .br \f(CWchgrp.c\fP, 63 .br child .br dissociated, 139 .br process, 72, 76\(en77, 86, 134, 138 .br process, independent, 139 .br process, pipe to, 98 .br process, wait for, 99 .br \f(CWchild.c\fP, 76 .br children, wait for, 82 .br \f(CWchmod\fP, 18, 56, 60 .br flag \f(CW+a\fP, 56 .br click, 280 .br to type, 8 .br client, 126, 296 .br connection, 129 .br uid, 335 .br clients, 3 .br clip, 274 .br clone, fid, 311 .br \f(CWclone\fP file, 119 .br close, connection, 130 .br \f(CWclose\fP, 51, 66, 100 .br closed pipe, 98 .br \f(CWclosedisplay\fP, 272 .br \f(CWclosekeyboard\fP, 285 .br \f(CWclosemouse\fP, 270, 276 .br \f(CWcmp\fP, 102, 186 .br \f(CWcnt.c\fP, 211 .br code .br generation, 164 .br unicode, 266 .br collection, garbage, 309 .br color, 279 .br combining commands, 158 .br command, 3, 23, 38, 72, 158 .br argument, 9\(en10 .br background, 84, 89 .br builtin, 139 .br compound, 10, 94, 163, 177 .br conditional, 166 .br diagnostic, 11 .br execution, remote, 132 .br flag, 9 .br interpreter, 23 .br invocation syntax, 35 .br line, 4, 23, 37, 85, 88, 101, 169, 172 .br option, 9 .br substitution, 101, 166 .br typing a, 9 .br command .br \f(CW!\fP, 168 .br \f(CW&&\fP, 169 .br \f(CW||\fP, 169 .br \f(CW \fP, 166 .br \f(CWacme\fP pipe, 101 .br \f(CWcpu\fP, 132 .br \f(CWfile\fP, 168 .br \f(CWfor\fP, 164 .br \f(CWif\fP, 166 .br \f(CWlisten\fP, 131 .br \f(CWlstk\fP \f(CWacid\fP, 43 .br \f(CWplumb\fP, 114 .br \f(CWread\fP, 85 .br \f(CWrfork\fP, 139, 161 .br \f(CWstk\fP \f(CWacid\fP, 43 .br \f(CWtime\fP, 172 .br \f(CWwindow\fP, 152 .br commands .br acme, 7 .br combining, 158 .br executing, 5 .br commands, \f(CWrio\fP, 5 .br comment .br character, shell, 20 .br ignore, 195 .br shell, 86 .br communication .br asynchronous, 102, 104 .br channel, 242 .br multiway, 251 .br process, 95, 242 .br synchronous, 102 .br comparation, file, 186 .br compare .br file, 102 .br operator, 166 .br compilation, kernel, 170 .br compiler, 20, 27 .br flags, 20 .br regular expression, 181 .br compose, 263 .br compound command, 10, 94, 163, 177 .br compound \f(CWsed\fP command, 174 .br compressed archive, 176 .br computer .br laptop, 326 .br network, 118 .br computing, distributed, 131, 154 .br concatenation .br distributive, 160 .br list, 159 .br operator, 159 .br concurrent .br processes, 27 .br programming, 79, 204 .br server, 129 .br updates, 207 .br condition, 168 .br race, 79, 204 .br variables, 225 .br conditional .br command, 166 .br construct, 168 .br execution, 166 .br pipe, 169 .br conditionals, \f(CWrc\fP, 168 .br connection, 119 .br accept, 128 .br client, 129 .br close, 130 .br draw, 271 .br hangup, 120 .br information, network, 124 .br network, 118\(en119, 123, 140 .br server, 122 .br connection \f(CWctl\fP file, 124 .br \f(CWconninfo.c\fP, 125 .br console, 50, 103, 287 .br device, 152, 262 .br echo, 264 .br fossil, 107 .br multiplexing, 287 .br read, 263 .br reader, 216 .br virtual, 265 .br write, 263 .br construct, conditional, 168 .br construction, address, 124 .br content, file, 15 .br contention, lock, 221 .br context, 40 .br match, 180 .br switch, 40, 207, 235, 237 .br context \f(CWdiff\fP, 187 .br control .br Access, 329 .br character, 16 .br flow, 134\(en135, 235 .br flow of, 40 .br list, access, 17 .br lists, access, 329 .br control-d, 50, 89 .br control-u, 263 .br conventions, Qid, 309 .br conversion .br case, 163 .br rune, 267 .br cooked mode, 263 .br coordinate .br mouse, 268 .br translation, 274 .br coordinates, window, 273 .br copy .br CD, 201 .br directory, 175 .br file, 11, 66 .br image, 274 .br \f(CWcopy\fP \f(CWrc\fP script, 138 .br count, word, 88, 94 .br counter .br program, 27 .br shared, 204, 235 .br counting, reference, 309 .br \f(CWcp\fP, 11, 15, 66 .br \f(CWcpu\fP, 154 .br command, 132 .br CPU .br server, 154, 340 .br servers, 131 .br time, 111 .br type, 152 .br \f(CWcpu\fP variable, 132 .br \f(CW$cputype\fP, 152 .br \f(CWcreate\fP, 57, 91, 93, 109, 299 .br \f(CWcreate.c\fP, 58 .br creation .br directory, 58, 300 .br file, 57, 67 .br network port, 126 .br pipe, 100 .br process, 72\(en73, 134, 248 .br window, 287 .br critical region, 208, 210 .br \f(CWcron\fP, 340 .br cross-compiler, 20 .br \f(CWcsquery\fP, 122 .br \f(CWctl\fP, 45 .br file, 271 .br file, connection, 124 .br file, network, 119 .br file, process, 45 .br current .br directory, 13, 26, 51 .br directory, change, 13 .br directory, print, 13 .br window, 290 .SH D .LP .br \f(CW#d\fP device driver, 152 .br \f(CWd2h\fP \f(CWrc\fP script, 163 .br data, 15 .br meaning of, 17 .br processing, 194 .br processing, 158 .br segment, 30, 45 .br types, abstract, 1 .br user, 311 .br \f(CWdata\fP file, 271 .br network, 119 .br \f(CW#|/data1\fP, 199 .br database, network, 122 .br datagram, 119 .br \f(CWdate\fP, 8\(en9, 88 .br \f(CWdd\fP, 66 .br deadlock, 101, 232 .br death, process, 31 .br debug protection, 332 .br debugger, 42, 240 .br debugging, 36, 38, 42, 158, 322 .br file server, 305 .br remote, 155 .br thread, 240 .br declaration, C, 164 .br \f(CWdecref\fP, 310 .br definition, function, 183 .br \f(CWDel\fP, 7 .br \f(CWDelete\fP, 5, 105, 136, 263, 288 .br delete text, 173 .br deleting partitions, 294 .br deletion, file, 58 .br delimiter, field, 196 .br delimiters, message, 96, 120 .br delivering, message, 113 .br demand paging, 30 .br dependencies, file, 318 .br DES, 343 .br description, disk, 292 .br descriptor .br authentication file, 151 .br board, file, 107 .br duplicate file, 90 .br file, 48, 51, 77, 89 .br group, file, 135 .br image, 279 .br post, file, 108, 140 .br process group, file, 134 .br redirection , file, 88 .br table, file, 48, 134 .br descriptor, \f(CWBiobuf\fP file, 70 .br \f(CWdestroyfid\fP, 312, 337 .br \f(CW/dev\fP, 154, 262 .br \f(CW/dev/cons\fP, 50, 92, 262, 287 .br \f(CW/dev/consctl\fP, 287 .br \f(CW/dev/cursor\fP, 287 .br \f(CW/dev/draw\fP, 154, 271 .br \f(CW/dev/drivers\fP, 147 .br \f(CW/dev/hostdomain\fP, 330 .br \f(CW/dev/hostowner\fP, 327 .br device, 93 .br capability, 340 .br console, 152, 262 .br draw, 271 .br driver, 24, 147 .br driver, storage, 156 .br hardware, 24 .br mouse, 267 .br network, 118 .br path, 147 .br pipe, 199 .br root, 147 .br storage, 292 .br to device, 66 .br vga, 270 .br device driver .br \f(CW#/\fP, 147 .br \f(CW#|\fP, 199 .br \f(CW#c\fP, 152, 262 .br \f(CW#d\fP, 152 .br \f(CW#e\fP, 45, 147 .br \f(CW#i\fP, 271 .br \f(CW#m\fP, 267 .br \f(CW#p\fP, 44, 142, 148 .br \f(CW#S\fP, 156, 292 .br \f(CW#s\fP, 107 .br \f(CW#v\fP, 270 .br devices, graphic, 270 .br \f(CW/dev/kmesg\fP, 263 .br \f(CW/dev/kprint\fP, 263 .br \f(CW/dev/label\fP, 272, 289 .br \f(CW/dev/mouse\fP, 154, 267, 287 .br \f(CW/dev/mousectl\fP, 267 .br \f(CW/dev/null\fP, 85, 152, 166 .br \f(CW/dev/screen\fP, 46 .br \f(CW/dev/sysname\fP, 327 .br /dev/text, 289 .br \f(CW/dev/text\fP, 46 .br \f(CW/dev/time\fP, 44, 60, 152 .br \f(CW/dev/user\fP, 328 .br \f(CW/dev/window\fP, 46 .br \f(CW/dev/winid\fP, 289 .br \f(CW/dev/winname\fP, 274, 289 .br \f(CW/dev/wsys\fP, 289 .br \f(CW/dev/zero\fP, 67 .br diagnostic, 92 .br command, 11 .br diagnostics, script, 186 .br \f(CWdial\fP, 124 .br dialing, 123 .br \f(CWdiehard\fP, 76 .br \f(CWdiff\fP, 186 .br context, 187 .br flag \f(CW-n\fP, 187 .br differences, file, 186 .br \f(CWDir\fP, 60\(en61, 298 .br directory, 4, 12 .br change current, 13 .br copy, 175 .br creation, 58, 300 .br current, 13, 26, 51 .br dot, 13 .br dot-dot, 13 .br empty, 59 .br entry, 59, 298 .br home, 4, 13, 37, 152 .br line, 119, 127, 271 .br list, 63 .br permissions, 18 .br print current, 13 .br read, 61 .br reads, 315 .br root, 13, 134 .br working, 134 .br \f(CWdirfstat\fP, 61 .br \f(CWdirfwstat\fP, 63 .br \f(CWdirgen\fP, 315 .br \f(CWdirread\fP, 61 .br \f(CWdirread9p\fP, 315 .br \f(CWdirstat\fP, 60, 62, 298 .br \f(CWdirwstat\fP, 62 .br discard, output, 94 .br discipline, line, 263 .br disk, 292 .br description, 292 .br file, 292 .br initialization, 295 .br local, 295 .br partitioning, 295 .br space, 56 .br storage, 292 .br usage, 175, 182 .br \f(CWDisplay\fP, 272, 279 .br display, file, 15 .br \f(CWdisplay\fP, 272 .br dissociated child, 139 .br distributed .br computing, 131, 154 .br system, 118 .br distributive concatenation, 160 .br DMA, 292 .br \f(CWdma\fP, 292 .br DMA, setting up, 292 .br \f(CWDMDIR\fP, 58, 300 .br DNS, 121 .br \f(CWdoctype\fP, 322 .br document viewer, 114 .br domain, authentication, 331 .br domains, authentication, 330 .br dot directory, 13 .br dot-dot directory, 13 .br down, 308 .br \f(CWdown\fP, 230 .br draw .br connection, 271 .br device, 271 .br operation flush, 274 .br string, 285 .br \f(CWdraw\fP, 273 .br drawing .br functions, 285 .br graphics, 273 .br slider, 278 .br text, 285 .br drive unit, 293 .br driver .br device, 24, 147 .br storage device, 156 .br driver .br \f(CW#/\fP device, 147 .br \f(CW#c\fP device, 152, 262 .br \f(CW#d\fP device, 152 .br \f(CW#e\fP device, 45, 147 .br \f(CW#i\fP device, 271 .br \f(CW#m\fP device, 267 .br \f(CW#p\fP device, 44, 142, 148 .br \f(CW#S\fP device, 156, 292 .br \f(CW#v\fP device, 270 .br dst, 114 .br \f(CWdu\fP, 175, 182 .br dump .br file, 65 .br file hexadecimal, 15 .br file system, 143 .br message, 338 .br stack, 212 .br thread stack, 242 .br \f(CWdup\fP, 90\(en91, 108 .br in \f(CWrc\fP, 93 .br duplicate file descriptor, 90 .br duplicates, remove, 183 .br \f(CWDx\fP, 280 .br \f(CWDy\fP, 280 .br \f(CWDYellow\fP, 279 .SH E .LP .br \f(CW#e\fP device driver, 45, 147 .br \f(CWEARGF\fP, 34 .br echo .br character, 264 .br console, 264 .br server, 108 .br server, network, 129 .br service, TCP, 131 .br \f(CWecho\fP, 31, 64 .br flag \f(CW-n\fP, 31 .br \f(CWecho.c\fP, 31, 39 .br \f(CWedata\fP, 29 .br \f(CWedit\fP plumb port, 113 .br editing, 5 .br text, 171 .br editor, stream, 172 .br \f(CWedits.c\fP, 115 .br efficiency, 110, 172 .br elapsed time, 67 .br element, picture, 268 .br emalloc9p, 309 .br empty .br directory, 59 .br list, 161 .br encrypt, 343 .br end of .br file, 16, 97 .br line, 178 .br pipe, 199 .br text, 178 .br \f(CWend\fP, 29 .br \f(CWEND\fP pattern, 193 .br entering the system, 2 .br entry .br directory, 59, 298 .br point, program, 31 .br \f(CW/env\fP, 138 .br file system, 45 .br \f(CWenv.c\fP, 39 .br environment .br group, 138 .br process, 72 .br process group, 134 .br variable, 44\(en45, 64, 81, 134, 138, 158 .br Environment variables, 134 .br environment variables, 37 .br EOF, 16 .br address, 173 .br epoch, 44 .br erealloc9p, 309 .br \f(CWerr.c\fP, 36 .br \f(CWerrfun\fP, 272 .br error, 41 .br redirection, standard, 166 .br standard, 49\(en50, 92 .br string, 36, 59, 83 .br system call, 35, 59, 81 .br \f(CW+Errors\fP, \f2see\fP acme .br \f(CWEscape\fP, 263 .br escape .br character, 10, 39, 179 .br key, 263 .br \f(CWetext\fP, 29 .br \f(CWether0\fP, 118 .br ethernet, 118 .br \f(CWetticker.c\fP, 255 .br event, 110, 112 .br channel, 112 .br channel, mouse, 269 .br mouse, 267 .br processing, mouse, 276 .br resize, 275\(en276 .br everything is a file, 44 .br evil, 326 .br exception, 41, 104 .br exclusion, mutual, 209\(en210, 231 .br exclusive open, 267 .br \f(CWexec\fP, 72, 80\(en81 .br header, 85 .br \f(CWexecl\fP, 72, 80, 90, 100 .br \f(CWexecl.c\fP, 80 .br executable, 85 .br file, 18 .br executing commands, 5 .br execution .br conditional, 166 .br independent, 26, 75 .br parallel, 26 .br process, 205 .br program, 24, 72, 80, 258 .br pseudo-parallel, 27 .br remote, 154 .br remote command, 132 .br \f(CWExit\fP, 7 .br exit status, 35, 38, 42, 82, 166 .br \f(CWexits\fP, 21, 35, 73, 82, 218, 236 .br expansion, variable, 64 .br export, file system, 155 .br \f(CWexportfs\fP, 155 .br expression .br arithmetic, 86, 161 .br compiler, regular, 181 .br inner, 179 .br regular, 114, 178 .br extraction, archive, 176 .SH F .LP .br \f(CWfaces\fP, 110 .br \f(CWfactotum\fP, 331, 343 .br fault, 42 .br \f(CWfauth\fP, 329 .br \f(CWFcall\fP, 306 .br \f(CWfd\fP file, process, 51 .br \f(CW/fd\fP file system, 89, 152 .br \f(CWfdisk\fP, 294 .br \f(CWfhello.c\fP, 53 .br \f(CWFid\fP, 307 .br fid .br clone, 311 .br new, 299 .br fids, 297 .br field delimiter, 196 .br fields, line, 190 .br file, 7, 44 .br 9P, 297 .br access time, 60 .br address, 114 .br archive, 65 .br attributes, 59 .br authentication, 329, 336 .br binary, 20\(en21, 23, 27, 151 .br block, 67 .br comparation, 186 .br compare, 102 .br content, 15 .br copy, 11, 66 .br creation, 57, 67 .br deletion, 58 .br dependencies, 318 .br descriptor, 48, 51, 77, 89 .br descriptor, authentication, 151 .br descriptor board, 107 .br descriptor, duplicate, 90 .br descriptor group, 135 .br descriptor post, 108, 140, 296 .br descriptor process group, 134 .br descriptor redirection , 88 .br descriptor table, 48, 134 .br differences, 186 .br disk, 292 .br display, 15 .br dump, 65 .br executable, 18 .br font, 286 .br group, 60 .br head, 172 .br here, 102 .br hexadecimal dump, 15 .br identifier, 297 .br include, 173 .br interface, 44, 158 .br length, 60 .br list, 63 .br mode, 60 .br modification time, 60 .br mounted, 141 .br move, 14 .br name, 12, 50, 60, 64, 134, 139 .br name patterns, 64 .br object, 21 .br offset, 52, 54 .br owner, 60 .br ownership, 17 .br permissions, 17 .br Qid, 298 .br read, robust, 105 .br remove, 11, 312 .br rename, 14, 174 .br searching, 64 .br server, 3, 22, 54, 107, 109, 140, 199, 292 .br server debugging, 305 .br server mount, 298 .br server program, 143, 292 .br server root directory, 297 .br size, 10 .br system, 147, 199 .br system, CD, 200 .br system dump, 143 .br system export, 155 .br system mount, 140 .br system protocol, 140, 295 .br system, ram, 201 .br system, remote, 154 .br system, semaphore, 301 .br system snapshot, 143 .br system, terminal, 154 .br temporary, 189 .br tree, 12, 134, 139\(en140 .br version, 298 .br who last modified, 14 .br with holes, 56 .br file .br \f(CWclone\fP, 119 .br \f(CWctl\fP, 271 .br \f(CWdata\fP, 271 .br descriptor, \f(CWBiobuf\fP, 70 .br \f(CWlocal\fP, 120 .br names, \f(CW#\fP, 147 .br \f(CWnamespace\fP, 180 .br network \f(CWdata\fP, 119 .br \f(CWpatterns\fP, 185 .br process \f(CWctl\fP, 45 .br process \f(CWfd\fP, 51 .br process \f(CWmem\fP, 45 .br process \f(CWnote\fP, 103, 105 .br process \f(CWnotepg\fP, 103, 105 .br process \f(CWns\fP, 142 .br \f(CWremote\fP, 120 .br \f(CWrpc\fP, 332 .br system, \f(CW/env\fP, 45 .br system, \f(CW/fd\fP, 89, 152 .br system, \f(CW/mnt/plumb\fP, 113 .br system, \f(CW/net\fP, 118 .br system, \f(CW/proc\fP, 44, 103, 142 .br system, \f(CWrio\fP, 153, 287 .br system, \f(CW/srv\fP, 107 .br \f(CWfile\fP .br command, 168 .br \f(CWrc\fP script, 168 .br files .br header, 20 .br move, 175 .br temporary, 40 .br text, 158 .br using, 9 .br \f(CWfill.c\fP, 97 .br firewall, 156 .br flag, command, 9 .br flag .br \f(CW-a\fP, \f(CWbind\fP, 148 .br \f(CW+a\fP, \f(CWchmod\fP, 56 .br \f(CW-b\fP, \f(CWbind\fP, 148 .br \f(CW-c\fP, \f(CWbind\fP, 150 .br \f(CW-c\fP, \f(CWrc\fP, 100 .br \f(CW-d\fP, \f(CWls\fP, 14 .br \f(CW-d\fP, \f(CWtest\fP, 169 .br \f(CW-d\fP, \f(CWtr\fP, 164 .br \f(CW-e\fP, \f(CWgrep\fP, 185 .br \f(CW-e\fP, \f(CWsed\fP, 172 .br \f(CW-e\fP, \f(CWtest\fP, 169 .br \f(CW-F\fP, \f(CWawk\fP, 196 .br \f(CW-f\fP, \f(CWgrep\fP, 185 .br \f(CW-f\fP, \f(CWrm\fP, 12 .br \f(CW-i\fP, \f(CWgrep\fP, 185 .br \f(CW-l\fP, \f(CWls\fP, 28 .br \f(CW-m\fP, \f(CWls\fP, 14 .br \f(CW-n\fP, \f(CWdiff\fP, 187 .br \f(CW-n\fP, \f(CWecho\fP, 31 .br \f(CW-n\fP, \f(CWgrep\fP, 185 .br \f(CW-n\fP, \f(CWnetstat\fP, 122 .br \f(CW-n\fP, \f(CWnm\fP, 29 .br \f(CW-n\fP, \f(CWsed\fP, 173 .br \f(CW-n\fP, \f(CWsort\fP, 182 .br \f(CW-o\fP, \f(CW8l\fP, 20 .br \f(CW-older\fP, \f(CWtest\fP, 170 .br \f(CW-r\fP, \f(CWrm\fP, 59 .br \f(CW-r\fP, \f(CWsort\fP, 182 .br \f(CW-r\fP, \f(CWtelnet\fP, 121 .br \f(CW-s\fP, \f(CWgrep\fP, 197 .br \f(CW-s\fP, \f(CWls\fP, 10 .br \f(CW-u\fP, \f(CWsort\fP, 184 .br \f(CW-w\fP, \f(CWwc\fP, 94 .br flags, 10 .br compiler, 20 .br flow .br control, 134\(en135, 235 .br of control, 26, 40 .br flush, draw operation, 274 .br flushimage, 274 .br flushing, buffer, 71 .br flushing, \f(CWBiobuf\fP, 69 .br \f(CWfmtinstall\fP, 270 .br \f(CWfn\fP, 183 .br focus, 103 .br input, 290 .br \f(CW$font\fP, 286 .br \f(CWFont\fP, 286 .br font, 272, 286 .br file, 286 .br \f(CWfor\fP command, 164 .br fork, resource, 134 .br \f(CWfork\fP, 72\(en73, 75, 77, 81, 100, 134, 139 .br return value, 72 .br format .br install, 270 .br network, 59, 61 .br format, \f(CWP\fP, 270 .br formatted, 295 .br output, 48 .br fossil console, 107 .br \f(CWfossil\fP, 107, 143, 196, 295 .br \f(CWfree\fP, 61 .br \f(CWfreenetconninfo\fP, 125 .br frozen process, 101 .br \f(CWfs\fP partition, 293 .br \f(CWfstat\fP, 61 .br full-duplex, 96 .br function .br definition, 183 .br library, 22 .br shell, 183 .br function, \f(CWacid\fP \f(CWthreads\fP, 240 .br functions, drawing, 285 .br \f(CWfwstat\fP, 63 .SH G .LP .br garbage collection, 309 .br generation, code, 164 .br \f(CWGet\fP, 7 .br \f(CWget\fP, 226 .br \f(CWgetenv\fP, 39, 46, 134, 159 .br \f(CWgetnetconninfo\fP, 124 .br \f(CWgetpid\fP, 40 .br \f(CWgetuser\fP, 153 .br \f(CWgetwindow\fP, 274, 289 .br \f(CWgid\fP, 60 .br global .br substitution, 174 .br variable, 28, 204 .br \f(CWglobal.c\fP, 28 .br globbing, 64, 168, 178 .br God, 92 .br good luck, 207, 343 .br graphic .br devices, 270 .br slider, 274 .br graphics, 272 .br drawing, 273 .br initialization, 272 .br mode, 270 .br greek letter, 266 .br \f(CWgrep\fP, 94, 142, 158, 178 .br flag \f(CW-e\fP, 185 .br flag \f(CW-f\fP, 185 .br flag \f(CW-i\fP, 185 .br flag \f(CW-n\fP, 185 .br flag \f(CW-s\fP, 197 .br silent, 197 .br group, 17 .br environment, 138 .br environment process, 134 .br file, 60 .br file descriptor, 135 .br file descriptor process, 134 .br id, 60 .br note, 134, 136 .br note process, 134 .br process, 37, 102\(en103 .br rendezvous, 134\(en135 .br \f(CWgzip\fP, 176 .SH H .LP .br \f(CWh2d\fP \f(CWrc\fP script, 164 .br handler, note, 104\(en105 .br handling authentication, 336 .br hangup, connection, 120 .br \f(CWhangup\fP note, 103, 189, 198 .br hardware, 24 .br acceleration, 270\(en271 .br device, 24 .br interrupt, 24 .br head, file, 172 .br header files, 20 .br header, \f(CWexec\fP, 85 .br height, rectangle, 280 .br \f(CWhello\fP \f(CWrc\fP script, 85 .br help, 8 .br here file, 102 .br hexadecimal, 162 .br dump, file, 15 .br \f(CWHFILES\fP, 321 .br \f(CWHide\fP, 5 .br hide, window, 290 .br \f(CWhoc\fP, 86 .br option \f(CW-e\fP, 162 .br hold mode, 263 .br holes, file with, 56 .br \f(CW$home\fP, 81, 152 .br home directory, 4, 13, 37, 152 .br \f(CWhostdomain\fP, 330 .br \f(CWhostowner\fP, 330 .br HTTP, 120 .SH I .LP .br \f(CW#i\fP device driver, 271 .br id .br group, 60 .br modification user, 60 .br process, 39 .br thread, 238 .br user, 60 .br Identification, 327 .br identifier, 180 .br file, 297 .br thread, 238 .br unique, 298 .br identity, 329 .br change, 340\(en341 .br \f(CWif\fP .br command, 166 .br \f(CWnot\fP, 166 .br \f(CWifcall\fP, 306 .br ignore comment, 195 .br \f(CWImage\fP, 273 .br image, 272 .br allocation, 279 .br chan, 279 .br copy, 274 .br descriptor, 279 .br memory, 28 .br replicated, 279 .br screen, 46 .br window, 46 .br implementation, 9P, 305 .br implicit rule, 321 .br import, 154 .br in octal, permissions, 19 .br in .br pipes, \f(CWrc\fP, 95 .br \f(CWrc\fP, \f(CWdup\fP, 93 .br include file, 173 .br includes, standard, 20 .br \f(CWincref\fP, 310 .br indent, text, 180 .br independent .br architecture, 59 .br child process, 139 .br execution, 26, 75 .br indexing, list, 159 .br information .br authentication, 334 .br network connection, 124 .br inheritance, 92 .br \f(CWinit\fP, 152 .br \f(CWinitdraw\fP, 272 .br initialization .br disk, 295 .br graphics, 272 .br keyboard, 281 .br mouse, 269 .br initializer, array, 164 .br \f(CWinitkeyboard\fP, 281 .br \f(CWinitmouse\fP, 269 .br inner expression, 179 .br input .br and output redirection, 93 .br base, 162 .br focus, 290 .br keyboard, 281 .br mouse, 267 .br record, 195 .br redirection, 89 .br standard, 49\(en50, 89\(en90 .br \f(CWinquiry\fP, 292 .br insensitive, case, 185 .br install, format, 270 .br install, \f(CWmk\fP, 322 .br installation, stand-alone, 295 .br instruction .br atomic, 207 .br order, 208 .br instruction, \f(CWtas\fP, 210 .br integrity, 326 .br Intel, 20 .br interface, file, 44, 158 .br interleaving, 205 .br internet .br probe, 167 .br protocol, 118 .br interpreted program, 85 .br interpreter, 85 .br command, 23 .br interrupt, 102, 207 .br hardware, 24 .br process, 103 .br program, 265 .br software, 23 .br \f(CWinterrupt\fP note, 103, 105, 136, 189, 198, 288 .br \f(CWintfork.c\fP, 75 .br into, logging, 4 .br invocation syntax, command, 35 .br I/O, 48 .br buffered, 66, 68, 247 .br redirection, 88 .br thread, 247 .br user, 262 .br IP, 118 .br \f(CWip/ping\fP, 123, 167 .br \f(CWiredir.c\fP, 90 .br is a file, everything, 44 .SH K .LP .br Ken Thompson, 20, 265 .br kernel, 1, 23, 40, 140, 235, 328 .br compilation, 170 .br key, 342 .br adding, 336 .br escape, 263 .br reading, 336 .br \f(CWkey\fP, 331 .br keyboard, 266 .br initialization, 281 .br input, 281 .br library, 281 .br \f(CWKeyboardctl\fP, 281 .br \f(CWkeyboardthread\fP, 284 .br \f(CWkeyfs\fP, 342 .br keys, 331 .br arrow, 263 .br \f(CWkfs\fP, 295 .br kill .br broken process, 95 .br process, 104 .br \f(CWkill\fP, 45, 192 .br killing a process, 45 .SH L .LP .br label, window, 272, 289 .br language .br arithmetic, 162 .br C, 19 .br programming, 158 .br laptop computer, 326 .br layout .br automatic, 291 .br screen, 291 .br \f(CWlc\fP, \f2see\fP \f(CWls\fP .br \f(CWlc\fP, 63 .br \f(CW$LD\fP, 320 .br leak, memory, 323 .br \f(CWleak\fP, 323 .br least privilege principle, 339 .br leaving the system, 5 .br length .br file, 60 .br line, 70 .br variable, 159 .br letter, greek, 266 .br \f(CWlib9p\fP, 302 .br memory allocation, 309 .br \f(CWlibc.h\fP, 20, 60 .br \f(CW/lib/namespace\fP, 153, 180, 339 .br \f(CW/lib/ndb/auth\fP, 340 .br libraries, 1 .br library, 20, 118 .br 9P, 302 .br C, 60 .br function, 22 .br keyboard, 281 .br mouse, 268 .br thread, 235 .br library .br \f(CWauth\fP, 333 .br \f(CWplumb\fP, 114 .br \f(CWwindow\fP, 289 .br line .br command, 4, 23, 37, 85, 88, 101, 169, 172 .br directory, 119, 127, 271 .br discipline, 263 .br end of, 178 .br fields, 190 .br length, 70 .br new, 53 .br number, 185 .br read, 70 .br start of, 178 .br line-feed character, 16 .br lines .br print, 173 .br unique, 183 .br linker, 27 .br list .br access control, 17 .br concatenation, 159 .br directory, 63 .br empty, 161 .br file, 63 .br indexing, 159 .br null, 161 .br process, 88 .br \f(CWlist\fP AWK script, 195 .br \f(CWlist2grades\fP \f(CWrc\fP script, 198 .br \f(CWlist2usr\fP, 196 .br listen, 129 .br \f(CWlisten\fP, 127, 129 .br command, 131 .br \f(CWlisten1\fP, 132 .br \f(CWlisten.c\fP, 127 .br lists, access control, 329 .br lists, \f(CWrc\fP, 158 .br load .br machine, 88 .br system, 111 .br loaded program, 27 .br loader, 20, 29 .br program, 28 .br loading .br on demand, 30 .br program, 72 .br \f(CWLocal\fP, 144 .br local .br address, 124 .br disk, 295 .br storage, 326 .br \f(CWlocal\fP file, 120 .br \f(CWlocaltime\fP, 255 .br \f(CWLock\fP, 209 .br lock, 207, 209 .br contention, 221 .br queueing, 214 .br resource, 209 .br spin, 213 .br \f(CWlock\fP, 209 .br \f(CWlock.c\fP, 209 .br locks, read/write, 219 .br logging into, 4 .br logical .br and, 169 .br or, 169 .br login, 4 .br \f(CWlogin\fP, 341 .br loging out, 4\(en5 .br logout, 4\(en5 .br \f(CWlookman\fP, 9, 161 .br loop, server, 304 .br loop, \f(CWrc\fP, 164 .br \f(CWlp\fP, 46 .br \f(CWlr\fP, 183 .br \f(CWlrusers\fP, 184 .br \f(CWls\fP, 9, 60, 63 .br flag \f(CW-d\fP, 14 .br flag \f(CW-l\fP, 28 .br flag \f(CW-m\fP, 14 .br flag \f(CW-s\fP, 10 .br \f(CWlsdot.c\fP, 62 .br \f(CWlstk\fP \f(CWacid\fP command, 43 .br luck, good, 207 .SH M .LP .br \f(CW#m\fP device driver, 267 .br machine .br load, 88 .br owner, 327 .br services, 131 .br stand-alone, 326 .br start script, 132 .br virtual, 2 .br machines, 326 .br \f(CWMAFTER\fP mount flag, 150 .br magic, 2 .br mail, 118 .br server, 132 .br \f(CWmail\fP, 98, 110, 170 .br \f(CWmain\fP, 31, 43, 72 .br \f(CWmain/active\fP, 143 .br \f(CWmake\fP, 318 .br making calls , 123 .br malicious person, 326 .br \f(CWmalloc\fP, 30, 60, 323 .br \f(CWman\fP, 8 .br manager, resource, 2 .br manual, 8 .br page, 114 .br search, 161 .br \f(CWmask\fP, 273\(en274 .br match .br context, 180 .br string, 166, 168 .br sub-expression, 179 .br \f(CWmatch.c\fP, 181 .br matching, 64 .br text, 178 .br maximum, 193 .br \f(CWMBEFORE\fP mount flag, 150 .br \f(CWMCREATE\fP mount flag, 150 .br meaning .br of, data, 17 .br of program, 205 .br measurement, performance, 172 .br \f(CWmem\fP file, process, 45 .br memory .br image, 28 .br leak, 323 .br private, 332 .br process, 40, 74 .br segment, 30, 42, 45 .br segment, virtual, 134 .br shared, 204, 304 .br usage, 193 .br virtual, 29\(en30, 40 .br memory allocation, \f(CWlib9p\fP, 309 .br menu, \f(CWrio\fP, 5, 290 .br message .br attribute, plumb, 115 .br attributes, plumb, 114 .br delimiters, 96, 120 .br delivering, 113 .br dump, 338 .br handler, 9P, 304 .br plumb, 113 .br reader, 216 .br receive, plumb, 115 .br size, 297 .br tag, 297 .br type, 296 .br messages, \f(CW9P\fP, 296 .br metadata, 59 .br meta-protocol, 335 .br meta-rule, 321 .br \f(CWmk\fP, 318 .br install, 322 .br predefined variables, 320 .br rules, 318 .br targets, 318 .br variables, 319 .br \f(CWmkdir\fP, 14 .br \f(CWmkfile\fP, 318, 323 .br \f(CWmkone\fP, 321 .br \f(CW/mnt/plumb\fP file system, 113 .br \f(CW/mnt/sem\fP, 302 .br \f(CW/mnt/term\fP, 154 .br \f(CW/mnt/wsys\fP, 288 .br mode .br cooked, 263 .br file, 60 .br graphics, 270 .br hold, 263 .br octal, 19 .br open, 50 .br privileged, 2, 23 .br raw, 263 .br scroll, 290 .br text, 270 .br mode, \f(CWAEXEC\fP access, 82 .br modification .br time, 315 .br time, file, 60 .br user id, 60 .br \f(CW$monitor\fP, 271 .br monitor, 225, 270 .br mount .br authentication, 151 .br file server, 298 .br file system, 140 .br point, 141, 147, 149 .br specifier, 143, 150 .br table, 140\(en141 .br union, 148 .br mount flag .br \f(CWMAFTER\fP, 150 .br \f(CWMBEFORE\fP, 150 .br \f(CWMCREATE\fP, 150 .br \f(CWMREPL\fP, 150 .br \f(CWmount\fP, 140, 150, 329 .br mounted file, 141 .br \f(CWMouse\fP, 269 .br mouse .br button, 5 .br button-1, 268, 280 .br button2, 268 .br button-3, 113 .br coordinate, 268 .br device, 267 .br event, 267 .br event channel, 269 .br event processing, 276 .br initialization, 269 .br input, 267 .br library, 268 .br position, 268 .br \f(CWMousectl\fP, 269 .br \f(CWmousethread\fP, 276 .br \f(CWMove\fP, 5 .br move .br file, 14 .br files, 175 .br \f(CWMREPL\fP mount flag, 150 .br MS Word viewer, 114 .br \f(CWmtime\fP, 60 .br MT-Safe, 258 .br multiple reader, 219 .br multiplexing .br console, 287 .br resource, 2 .br multiprogramming, 41 .br multiway .br branch, 168 .br communication, 251 .br mutex, 231, 316 .br mutual exclusion, 209\(en210, 231 .br \f(CWmv\fP, 14 .SH N .LP .br name .br file, 12, 50, 60, 64, 134, 139 .br patterns, file, 64 .br process, 39 .br program, 80 .br resolution, 139\(en140 .br service, 140 .br service, 120\(en121, 126 .br space, 134, 139\(en140, 150 .br space, new, 151 .br space, standard, 153 .br system, 38, 152 .br thread, 238 .br translation, 121 .br user, 4, 38, 152, 328 .br window, 274 .br names, \f(CW#\fP file, 147 .br namespace, new, 339 .br \f(CWnamespace\fP file, 180 .br ndata, 114 .br \f(CWndb\fP, 122 .br \f(CWndb/cs\fP, 122 .br \f(CWndb/csquery\fP, 122 .br \f(CW/n/dump\fP, 65 .br negation, 168 .br \f(CW/net\fP file system, 118 .br \f(CWNetConnInfo\fP, 125 .br \f(CWnetecho.c\fP, 129 .br \f(CW/net/ipifc\fP, 118 .br \f(CWnetmkaddr\fP, 124 .br \f(CWnetstat\fP, 122, 127 .br flag \f(CW-n\fP, 122 .br network .br address, 118, 120\(en121 .br computer, 118 .br connection, 118\(en119, 123, 140 .br connection information, 124 .br database, 122 .br device, 118 .br echo server, 129 .br format, 59, 61 .br port, 118 .br port creation, 126 .br protocol, 121 .br services, 118, 131 .br status, 122 .br network .br \f(CWctl\fP file, 119 .br \f(CWdata\fP file, 119 .br \f(CWNew\fP, 5 .br new .br account, 342 .br fid, 299 .br line, 53 .br name space, 151 .br namespace, 339 .br process, 135 .br user, 329, 342 .br window, 5, 288 .br newline, 263 .br new-line character, 16 .br \f(CWnewns\fP, 151, 339 .br \f(CWnewuser\fP, 5 .br \f(CWnext\fP AWK command, 195 .br \f(CWnm\fP, 21 .br flag \f(CW-n\fP, 29 .br no attach, 153 .br \f(CWnone\fP, 339 .br become, 340 .br non-linear pipe, 102, 184 .br \f(CWnoswap\fP, 332 .br \f(CWnot\fP, \f(CWif\fP, 166 .br note .br group, 134, 136 .br handler, 104\(en105 .br handler, shell, 189 .br post, 103 .br process group, 134 .br note .br handler, \f(CWrc\fP, 198 .br \f(CWhangup\fP, 103, 189, 198 .br \f(CWinterrupt\fP, 103, 105, 136, 189, 198, 288 .br \f(CWnote\fP file, process, 103, 105 .br \f(CWnotepg\fP file, process, 103, 105 .br \f(CWnoterfork.c\fP, 137 .br notes, 102, 259 .br \f(CW/NOTICE\fP, 53 .br \f(CWnread.c\fP, 57 .br \f(CWns\fP, 143 .br file, process, 142 .br null .br list, 161 .br pointer, 45 .br variable, 161 .br number .br line, 185 .br port, 119, 121 .br version, 216 .br NVRAM, 342 .br nvram, 342 .br \f(CWnwname\fP, 299 .SH O .LP .br \f(CW$O\fP, 320 .br object file, 21 .br \f(CW$objtype\fP, 321 .br octal .br mode, 19 .br permissions, 60 .br of .br control, flow, 40 .br file, end, 16, 97 .br identity, proof, 329 .br \f(CWofcall\fP, 306 .br offset, 15, 52 .br file, 52, 54 .br shared, 79 .br \f(CWOFILES\fP, 321 .br on .br demand, loading, 30 .br single sign, 343 .br \f(CWonefork.c\fP, 73 .br only, append, 56 .br open .br account, 4 .br exclusive, 267 .br mode, 50 .br plumb port, 115 .br open .br flag, \f(CWORCLOSE\fP, 105 .br mode, \f(CWOREAD\fP, 51 .br mode, \f(CWOTRUNC\fP, 55 .br mode, \f(CWOWRITE\fP, 51, 54 .br \f(CWopen\fP, 50, 53, 57, 66, 139 .br \f(CWopenfont\fP, 286 .br operating system, 1 .br operation .br alternative channel, 257 .br permitted, 329 .br simultaneous channel, 257 .br operator .br compare, 166 .br concatenation, 159 .br option, 10 .br argument, 33 .br command, 9 .br option .br \f(CW--\fP, 32 .br \f(CW-e\fP, \f(CWhoc\fP, 162 .br optional string, 178 .br or, logical, 169 .br \f(CWORCLOSE\fP open flag, 105 .br order, instruction, 208 .br \f(CWOREAD\fP open mode, 51 .br origin, screen, 274 .br \f(CWOTRUNC\fP open mode, 55 .br out, loging, 4\(en5 .br output .br base, 162 .br discard, 94 .br formatted, 48 .br redirection, 88 .br redirection, standard, 92 .br standard, 49\(en50 .br verbose, 176 .br overlap, window, 290 .br owner .br file, 60 .br machine, 327 .br ownership, file, 17 .br \f(CWOWRITE\fP open mode, 51, 54 .SH P .LP .br \f(CW#p\fP device driver, 44, 142, 148 .br \f(CWP\fP format, 270 .br page, manual, 114 .br \f(CWpage\fP, 114, 323 .br paging, demand, 30 .br pair, address, 173 .br panel process, 216 .br panels, airport, 215, 247 .br parallel, 27 .br execution, 26 .br parent process, 72, 77, 134 .br parsing, 170 .br partition, 292 .br partition .br \f(CW9fat\fP, 293 .br \f(CWfs\fP, 293 .br \f(CWplan9\fP, 293 .br partitioning .br automatic, 295 .br disk, 295 .br partitions, 293 .br adding, 294 .br deleting, 294 .br \f(CWpasswd\fP, 342 .br password, 326, 331 .br \f(CW$path\fP, 38 .br path, 12, 50, 134, 139 .br device, 147 .br relative, 31 .br \f(CWpath\fP, 46 .br Qid, 298 .br variable, 151 .br paths .br absolute, 13 .br relative, 13 .br pattern, 169 .br AWK, 191 .br character range, 65 .br pattern .br \f(CW*\fP, 64 .br \f(CW?\fP, 65 .br \f(CWBEGIN\fP, 193 .br \f(CWEND\fP, 193 .br patterns, file name, 64 .br \f(CWpatterns\fP file, 185 .br \f(CWpc.c\fP, 229 .br performance, 67 .br measurement, 172 .br permission check, 329 .br permissions, 60 .br change, 18 .br directory, 18 .br file, 17 .br in octal, 19 .br octal, 60 .br permitted operation, 329 .br person, malicious, 326 .br \f(CWPfmt\fP, 270 .br picture element, 268 .br \f(CW$pid\fP, 39, 51 .br \f(CWPID\fP, 238 .br pid, 39 .br shell, 39 .br window, 288 .br \f(CWpid.c\fP, 40 .br Pike, Rob, 6, 265 .br \f(CWping\fP, 123, 167 .br ping-pong, 244 .br pipe, 94, 96, 102, 109, 113, 119, 163, 226 .br bidirectional, 96 .br broken, 97 .br closed, 98 .br conditional, 169 .br creation, 100 .br device, 199 .br end of, 199 .br non-linear, 102, 184 .br to child process, 98 .br pipe command, \f(CWacme\fP, 101 .br \f(CWpipe\fP, 96 .br \f(CWpipe.c\fP, 96 .br \f(CWpipeto\fP, 100 .br \f(CWpipeto.c\fP, 98 .br pixel, 268 .br \f(CWplan9\fP partition, 293 .br plumb .br message, 113 .br message attribute, 115 .br message attributes, 114 .br message receive, 115 .br port open, 115 .br plumb port, \f(CWedit\fP, 113 .br \f(CWplumb\fP, 116 .br command, 114 .br library, 114 .br \f(CWPlumbattr\fP, 115 .br plumber port, 113 .br plumber .br \f(CWrules\fP, 113 .br \f(CWsend\fP, 113 .br \f(CWplumber\fP, 113, 146 .br plumbing, 113, 146 .br plumbing, \f(CWacme\fP, 113 .br \f(CWplumbing\fP, 113, 146 .br \f(CWPlumbmsg\fP, 115 .br \f(CWplumbopen\fP, 115 .br \f(CWplumbrecv\fP, 115 .br \f(CWplumbsend\fP, 116 .br \f(CWplumbsendtext\fP, 116 .br \f(CWPoint\fP, 269 .br point .br mount, 141, 147, 149 .br program entry, 31 .br to type, 8 .br pointer, null, 45 .br \f(CWpollb.c\fP, 111 .br \f(CWpoll.c\fP, 111 .br polling, 110, 112, 223 .br \f(CWpong.c\fP, 245 .br port, 113 .br announce, 126 .br creation, network, 126 .br network, 118 .br number, 119, 121 .br plumber, 113 .br position, mouse, 268 .br post .br file descriptor, 108, 140, 296 .br note, 103 .br \f(CWpostmountsrv\fP, 303 .br PostScript viewer, 114 .br practice, programming, 36 .br \f(CWpragma\fP, 20 .br \f(CWPread\fP, 40 .br predefined variables, \f(CWmk\fP, 320 .br preemptive scheduling, 41 .br \f(CWprep\fP, 294 .br \f(CW$prereq\fP, 320 .br principle, least privilege, 339 .br print .br current directory, 13 .br lines, 173 .br \f(CWprint\fP, 21, 36 .br channel, 257 .br privacy, 17 .br private memory, 332 .br privilege principle, least, 339 .br privileged mode, 2, 23 .br probe, internet, 167 .br \f(CW/proc\fP file system, 44, 103, 142 .br \f(CWproccreate\fP, 248 .br procedure call, remote, 23 .br process, 26, 40, 44, 72, 235 .br alarm, 106 .br average, 194 .br birth, 31 .br blocked, 97 .br child, 72, 76\(en77, 86, 134, 138 .br communication, 95, 242 .br creation, 72\(en73, 134, 248 .br death, 31 .br environment, 72 .br execution, 205 .br frozen, 101 .br group, 37, 102\(en103 .br group, environment, 134 .br group, file descriptor, 134 .br group, note, 134 .br id, 39 .br independent child, 139 .br interrupt, 103 .br kill, 104 .br kill broken, 95 .br list, 88 .br memory, 40, 74 .br name, 39 .br new, 135 .br panel, 216 .br parent, 72, 77, 134 .br resource, 134 .br runaway, 76 .br server, 303, 326 .br stack, 212, 236 .br state, 39\(en40, 111 .br structure, 250 .br synchronization, 218 .br termination, 35, 73, 139, 218 .br time, 83 .br process .br \f(CWctl\fP file, 45 .br \f(CWfd\fP file, 51 .br \f(CWmem\fP file, 45 .br \f(CWnote\fP file, 103, 105 .br \f(CWnotepg\fP file, 103, 105 .br \f(CWns\fP file, 142 .br processes, concurrent, 27 .br processing .br data, 158 .br data, 194 .br mouse event, 276 .br read, 313 .br stat, 316 .br walk, 317 .br write, 314 .br \f(CWprocexec\fP, 258 .br \f(CWprocexecl\fP, 258 .br producer/consumer, 225, 232 .br profile, 132 .br \f(CWprofile\fP, 5, 113 .br program .br arguments, 31 .br AWK, 195 .br boot, 132 .br C, 19 .br checking, 323 .br counter, 27 .br entry point, 31 .br execution, 24, 72, 80, 258 .br file server, 143, 292 .br interpreted, 85 .br interrupt, 265 .br loaded, 27 .br loader, 28 .br loading, 72 .br meaning of, 205 .br name, 80 .br running, 26 .br shell, 158 .br source, 42 .br symbols, 21 .br termination, 230, 248 .br text, 21 .br programming .br concurrent, 79, 204 .br language, 158 .br practice, 36 .br prompt, 3 .br proof of identity, 329 .br protection, debug, 332 .br protocol, 118 .br authentication, 330 .br file system, 140, 295 .br internet, 118 .br network, 121 .br telnet, 121 .br transport, 119 .br providing services, 126 .br \f(CWps\fP, 40, 45, 88, 95 .br pseudo-parallel execution, 27 .br \f(CWPt\fP, 279 .br \f(CWPut\fP, 7 .br \f(CWput\fP, 226 .br \f(CWputenv\fP, 39 .br \f(CWpwd\fP, 13, 37 .br \f(CWPwrite\fP, 97 .br PXE, 3 .SH Q .LP .br \f(CWqcnt.c\fP, 215 .br QID, 60 .br Qid .br , 298 .br conventions, 309 .br file, 298 .br Qid .br \f(CWpath\fP, 298 .br \f(CWtype\fP, 298 .br qids, 298 .br \f(CWQLock\fP, 214, 219 .br \f(CWqlock\fP, 214, 219, 226 .br \f(CWQTAPPEND\fP, 298 .br \f(CWQTAUTH\fP, 336 .br \f(CWQTDIR\fP, 298, 311 .br \f(CWQTEXCL\fP, 298 .br quantum, 40 .br queue, 310 .br queueing lock, 214 .br \f(CWqunlock\fP, 214 .br quoting, 38, 65, 162 .SH R .LP .br \f(CWr\fP, 36 .br \f(CWrabbits.c\fP, 77 .br race condition, 79, 204 .br ram file system, 201 .br \f(CWramfs\fP, 201, 296 .br range .br character, 178 .br pattern, character, 65 .br \f(CWRattach\fP, 297 .br \f(CWRauth\fP, 329 .br raw mode, 263 .br \f(CWraw.c\fP, 264 .br \f(CWrawoff\fP, 263 .br \f(CWrawon\fP, 263, 281 .br \f(CWrc\fP, 4 .br conditionals, 168 .br flag \f(CW-c\fP, 100 .br in pipes, 95 .br lists, 158 .br loop, 164 .br note handler, 198 .br script, 161 .br script, \f(CW9fs\fP, 142, 144 .br script, \f(CWargs\fP, 167 .br script, \f(CWcdcopy\fP, 201 .br script, \f(CWcopy\fP, 138 .br script, \f(CWd2h\fP, 163 .br script, \f(CWfile\fP, 168 .br script, \f(CWh2d\fP, 164 .br script, \f(CWlist2grades\fP, 198 .br script, \f(CWwhen\fP, 170\(en171 .br using, 158 .br \f(CW/rc/bin/service\fP, 131 .br \f(CWrcecho\fP \f(CWrc\fP script, 87 .br \f(CWrcinr.c\fP, 208 .br \f(CWRclunk\fP, 299 .br read .br console, 263 .br directory, 61 .br line, 70 .br processing, 313 .br robust file, 105 .br simultaneous, 262 .br string, 70 .br \f(CWread\fP, 49\(en50, 66, 68\(en69, 105 .br command, 85 .br \f(CWreadbuf\fP, 313 .br \f(CWread.c\fP, 49\(en50 .br reader .br console, 216 .br message, 216 .br multiple, 219 .br reading, key, 336 .br \f(CWreadn\fP, 105 .br reads, directory, 315 .br \f(CWreadstr\fP, 313 .br read/write locks, 219 .br \f(CWReady\fP, 111, 235 .br ready, 41 .br receive, plumb message, 115 .br receiving, call, 128 .br record .br input, 195 .br skip, 195 .br \f(CWRect\fP, 279 .br \f(CWRectangle\fP, 273 .br rectangle .br height, 280 .br width, 280 .br rectangle, \f(CWscreen\fP, 273 .br \f(CWrecv\fP, 242, 269 .br \f(CWrecvp\fP, 247 .br \f(CWrecvul\fP, 247 .br redirection .br file descriptor, 88 .br append, 93 .br input, 89 .br input and output, 93 .br I/O, 88 .br output, 88 .br standard error, 166 .br standard output, 92 .br \f(CWRef\fP, 310 .br reference counting, 309 .br \f(CWRefnone\fP, 277 .br \f(CWregcomp\fP, 181 .br \f(CWregexp\fP, 181 .br region, critical, 208, 210 .br registers, 75 .br registry, 107 .br regression testing, 323 .br regular expression, 114, 178 .br compiler, 181 .br relative .br path, 31 .br paths, 13 .br relying, 333 .br remote .br command execution, 132 .br debugging, 155 .br execution, 154 .br file system, 154 .br procedure call, 23 .br \f(CWremote\fP file, 120 .br remove .br duplicates, 183 .br file, 11, 312 .br \f(CWremove\fP, 58 .br rename, file, 14, 174 .br \f(CWRendez\fP, 223, 226 .br \f(CWrendez.c\fP, 222 .br rendezvous, 246 .br group, 134\(en135 .br tag, 221 .br \f(CWrendezvous\fP, 134, 221 .br \f(CWrepl\fP, 279 .br replace string, 172 .br replicated image, 279 .br representation, text, 265 .br \f(CWReprog\fP, 181 .br \f(CWReq\fP, 305 .br request, 9P, 296, 305 .br \f(CWRerror\fP, 297 .br \f(CWrerrstr\fP, 36 .br \f(CWResize\fP, 5 .br resize .br event, 275\(en276 .br window, 274\(en275, 291 .br \f(CWresize.c\fP, 276 .br \f(CWresizethread\fP, 276 .br resolution .br name, 139\(en140 .br screen, 271 .br resource .br fork, 134 .br lock, 209 .br manager, 2 .br multiplexing, 2 .br process, 134 .br shared, 78\(en79 .br sharing, 86, 134, 138 .br \f(CWrespond\fP, 306 .br Return, 4 .br return, carriage, 121 .br return value, \f(CWfork\fP, 72 .br reverse sort, 192 .br \f(CWRFENVG\fP \f(CWrfork\fP flag, 138 .br \f(CWRFFDG\fP \f(CWrfork\fP flag, 135 .br \f(CWRFMEM\fP \f(CWrfork\fP flag, 204 .br \f(CWRFNOMNT\fP \f(CWrfork\fP flag, 153, 340 .br \f(CWRFNOTEG\fP \f(CWrfork\fP flag, 136 .br \f(CWRFNOWAIT\fP \f(CWrfork\fP flag, 139 .br \f(CWrfork\fP, 134, 145, 204, 212, 248 .br command, 139, 161 .br flag, \f(CWRFENVG\fP, 138 .br flag, \f(CWRFFDG\fP, 135 .br flag, \f(CWRFMEM\fP, 204 .br flag, \f(CWRFNOMNT\fP, 153, 340 .br flag, \f(CWRFNOTEG\fP, 136 .br flag, \f(CWRFNOWAIT\fP, 139 .br flag, \f(CWRFPROC\fP, 135 .br \f(CWrforkls.c\fP, 135 .br \f(CWRFPROC\fP \f(CWrfork\fP flag, 135 .br \f(CWRFREND\fP, 249 .br \f(CWrincr.c\fP, 204 .br \f(CWrio\fP, 5, 37, 46, 262, 287 .br commands, 5 .br file system, 153, 287 .br menu, 5, 290 .br RJ45, 118 .br \f(CWrlock\fP, 219 .br \f(CWrm\fP, 11, 14, 58, 65 .br flag \f(CW-f\fP, 12 .br flag \f(CW-r\fP, 59 .br \f(CWrm.c\fP, 58 .br Rob Pike, 6, 265 .br robust file read, 105 .br \f(CWrobustreadn\fP, 106 .br role, 335 .br ROM, 270 .br \f(CW/root\fP, 152 .br root .br device, 147 .br directory, 13, 134 .br directory, file server, 297 .br \f(CWRopen\fP, 299 .br round trip time, 123 .br \f(CWrpc\fP file, 332 .br \f(CWRpt\fP, 279 .br \f(CWrsleep\fP, 223 .br RTT, 123 .br rule, implicit, 321 .br rules, \f(CWmk\fP, 318 .br \f(CWrules\fP, plumber, 113 .br runaway process, 76 .br \f(CWRune\fP, 266 .br rune, 15, 265 .br conversion, 267 .br \f(CWrune.c\fP, 266 .br \f(CWrunetochar\fP, 266 .br \f(CWrunlock\fP, 219 .br \f(CWrunls.c\fP, 72 .br \f(CWRunning\fP, 111 .br running, 41 .br program, 26 .br \f(CWRversion\fP, 297 .br \f(CWrwakeup\fP, 223 .br \f(CWrwakeupall\fP, 223 .br \f(CWRwalk\fP, 299 .br \f(CWRwrite\fP, 299 .br \f(CWrx\fP, 132 .SH S .LP .br \f(CW#S\fP device driver, 156, 292 .br \f(CW#s\fP device driver, 107 .br sandbox, 153 .br sandboxing, 152, 339 .br scheduler, 41 .br scheduling, 39, 41, 205, 235 .br preemptive, 41 .br screen, 268, 272 .br blank, 271 .br image, 46 .br layout, 291 .br origin, 274 .br resolution, 271 .br size, 268, 291 .br \f(CWscreen\fP, 272, 289 .br rectangle, 273 .br script, 85 .br argument, 159 .br arguments, 87, 167 .br diagnostics, 186 .br machine start, 132 .br shell, 85, 87, 138, 161 .br script, \f(CWrc\fP, 161 .br scroll mode, 290 .br \f(CWsdC0\fP, 156 .br search .br manual, 161 .br text, 114, 178 .br word, 94 .br searching, 182 .br file, 64 .br secret, 342 .br shared, 329 .br \f(CWsecstore\fP, 343 .br secure .br server, 336 .br store, 343 .br system, 326 .br security, 326 .br 9P, 328 .br \f(CWsed\fP, 172, 178 .br command, compound, 174 .br flag \f(CW-e\fP, 172 .br flag \f(CW-n\fP, 173 .br \f(CWseek\fP, 52, 55\(en56, 293 .br \f(CWseekhello.c\fP, 56 .br segment .br bss, 30, 45 .br data, 30, 45 .br memory, 30, 42, 45 .br stack, 30, 45 .br text, 30, 45 .br virtual memory, 134 .br \f(CWSem\fP, 308 .br semaphore, 230, 301 .br file system, 301 .br tickets, 230 .br value, 230 .br \f(CWsemfs\fP, 301 .br \f(CWsend\fP, 242 .br plumber, 113 .br \f(CWsendp\fP, 247 .br \f(CWsendul\fP, 247 .br \f(CWseq\fP, 101, 165, 193 .br sequences, 165 .br sequential .br access, 52 .br server, 129 .br server, 126, 296 .br 9P, 296 .br authentication, 342 .br concurrent, 129 .br connection, 122 .br CPU, 154, 340 .br echo, 108 .br file, 3, 22, 54, 107, 109, 140, 199, 292 .br loop, 304 .br mail, 132 .br network echo, 129 .br process, 303, 326 .br program, file, 143 .br secure, 336 .br sequential, 129 .br threaded, 129 .br uid, 335 .br servers .br authentication, 330 .br CPU, 131 .br service, 120 .br name, 120\(en121, 126 .br name, 140 .br TCP echo, 131 .br \f(CWservice\fP, 132 .br services .br machine, 131 .br network, 118, 131 .br providing, 126 .br set, character, 178 .br setting up DMA, 292 .br shared .br buffer, 225 .br counter, 204, 235 .br memory, 204, 304 .br offset, 79 .br resource, 78\(en79 .br secret, 329 .br sharing, resource, 86, 134, 138 .br shell, 4, 23 .br comment, 86 .br comment character, 20 .br function, 183 .br note handler, 189 .br pid, 39 .br program, 158 .br script, 85, 87, 138, 161 .br variable, 64, 158 .br \f(CWsic.c\fP, 35 .br \f(CWsig\fP, 9, 48 .br \f(CWsigalrm\fP, 189 .br \f(CWsighup\fP, 189 .br \f(CWsigint\fP, 189 .br sign on, single, 343 .br \f(CWsignal\fP, 230 .br silent \f(CWgrep\fP, 197 .br simultaneous .br channel operation, 257 .br read, 262 .br single .br sign on, 343 .br writer, 219 .br single-user, 327 .br size .br file, 10 .br message, 297 .br screen, 268, 291 .br skip record, 195 .br slash, 12, 134 .br sleep, 223 .br \f(CWsleep\fP, 52, 84, 105, 110, 112, 170, 207, 237 .br \f(CWsleep.c\fP, 52 .br slider .br drawing, 278 .br graphic, 274 .br \f(CWslider.c\fP, 284 .br \f(CWsmprint\fP, 257 .br snapshot, file system, 143 .br \f(CWSnarf\fP, 7 .br software interrupt, 23 .br sort .br reverse, 192 .br text, 182 .br \f(CWsort\fP, 182 .br flag \f(CW-n\fP, 182 .br flag \f(CW-r\fP, 182 .br flag \f(CW-u\fP, 184 .br sorting, 182 .br source, program, 42 .br space .br disk, 56 .br name, 134, 139\(en140, 150 .br new name, 151 .br virtual address, 29 .br spam, 185 .br speak for, 340 .br specifier .br attach, 143, 287 .br mount, 143, 150 .br spin lock, 213 .br split, string, 170 .br src, 114 .br \f(CWsrc\fP, 42 .br \f(CW/srv\fP, 108, 120, 155, 287 .br \f(CWSrv\fP, 302 .br \f(CWsrv\fP, 120, 140 .br \f(CW/srv\fP file system, 107 .br \f(CWsrv.c\fP, 123 .br \f(CWsrvecho.c\fP, 108 .br \f(CWsrvfs\fP, 155 .br \f(CW/srv/ram\fP, 296 .br stack .br dump, 212 .br dump, thread, 242 .br process, 212, 236 .br segment, 30, 45 .br thread, 236 .br stamp, time, 268 .br stand-alone .br installation, 295 .br machine, 326 .br standard .br error, 49\(en50, 92 .br error redirection, 166 .br includes, 20 .br input, 49\(en50, 89\(en90 .br name space, 153 .br output, 49\(en50 .br output redirection, 92 .br start .br of line, 178 .br of text, 178 .br script, machine, 132 .br starvation, 213, 223, 240 .br stat processing, 316 .br \f(CWstat\fP, 60\(en61 .br \f(CWstat.c\fP, 61 .br state .br blocked, 207 .br process, 39\(en40, 111 .br stateless, 3 .br statement, AWK, 190 .br statistics, system, 111 .br \f(CWstats\fP, 111, 288 .br \f(CW$status\fP, 35, 38 .br status .br exit, 35, 38, 42, 82, 166 .br network, 122 .br \f(CW$stem\fP, 321 .br \f(CWstk\fP \f(CWacid\fP command, 43 .br storage .br device, 292 .br device driver, 156 .br disk, 292 .br local, 326 .br store .br backing, 277 .br secure, 343 .br stream, 267 .br editor, 172 .br string, 159 .br draw, 285 .br error, 36, 59, 83 .br match, 166, 168 .br optional, 178 .br read, 70 .br replace, 172 .br split, 170 .br substitute, 174 .br \f(CWstring\fP, 285 .br \f(CWstringsize\fP, 286 .br \f(CWstrip\fP, 28 .br structure, process, 250 .br student account, 194 .br sub-expression match, 179 .br subshell, 138 .br substitute string, 174 .br substitution .br command, 101, 166 .br global, 174 .br switch .br context, 40, 207, 235, 237 .br thread, 237 .br \f(CWswitch\fP, 168 .br symbol, 42 .br table, 28 .br text, 265 .br undefined, 21 .br symbols, program, 21 .br synchronization, 204, 221 .br process, 218 .br thread, 246 .br synchronize, 207, 210 .br synchronous communication, 102 .br syntax, command invocation, 35 .br \f(CWsysfatal\fP, 36 .br \f(CW/sys/include\fP, 114 .br \f(CW$sysname\fP, 38, 152 .br \f(CWsysname\fP, 46 .br system .br call, 22\(en23, 40, 72 .br call error, 35, 59, 81 .br distributed, 118 .br dump, file, 143 .br file, 147, 199 .br load, 111 .br mount, file, 140 .br name, 38, 152 .br operating, 1 .br protocol, file, 140 .br secure, 326 .br snapshot, file, 143 .br statistics, 111 .br time, 67 .br window, 3, 5, 24, 103, 153, 262, 287 .br system .br \f(CW/env\fP file, 45 .br \f(CW/fd\fP file, 89, 152 .br \f(CW/mnt/plumb\fP file, 113 .br \f(CW/proc\fP file, 44, 103, 142 .br \f(CWrio\fP file, 153 .SH T .LP .br \f(CWt+\fP, 101, 180 .br \f(CWt-\fP, 180 .br \f(CWTab\fP, 16 .br tab wdith, 17 .br table .br file descriptor, 48, 134 .br mount, 140\(en141 .br symbol, 28 .br tag, 7 .br message, 297 .br rendezvous, 221 .br Tags, 297 .br \f(CWtake.c\fP, 19 .br tape, 67 .br archive, 175 .br \f(CWtar\fP, 175 .br \f(CWtarfs\fP, 199 .br \f(CWTARG\fP, 321 .br \f(CW$target\fP, 320 .br targets, \f(CWmk\fP, 318 .br \f(CWtas\fP instruction, 210 .br \f(CWTattach\fP, 297, 329 .br \f(CWTauth\fP, 329, 336 .br \f(CWTclunk\fP, 299 .br \f(CWtcnt.c\fP, 240 .br TCP echo service, 131 .br \f(CWtcp7\fP, 131 .br \f(CWTcreate\fP, 311 .br telnet protocol, 121 .br \f(CWtelnet\fP, 121 .br flag \f(CW-r\fP, 121 .br temporary .br file, 189 .br files, 40 .br terminal, 3, 22, 287, 326 .br file system, 154 .br termination .br process, 35, 73, 139, 218 .br program, 230, 248 .br termination, \f(CWBiobuf\fP, 69 .br \f(CWtermrc\fP, 132, 151 .br \f(CWtest\fP, 169 .br flag \f(CW-d\fP, 169 .br flag \f(CW-e\fP, 169 .br flag \f(CW-older\fP, 170 .br test-and-set, 210 .br testing, 322 .br regression, 323 .br \f(CWtexec.c\fP, 259 .br text .br address, 172 .br delete, 173 .br drawing, 285 .br editing, 171 .br end of, 178 .br files, 158 .br indent, 180 .br matching, 178 .br mode, 270 .br program, 21 .br representation, 265 .br search, 114, 178 .br segment, 30, 45 .br sort, 182 .br start of, 178 .br symbol, 265 .br window, 46, 289 .br the system .br entering, 2 .br leaving, 5 .br \f(CWthello.c\fP, 55 .br things, building, 318 .br thinking, wishful, 301 .br Thompson, Ken, 20, 265 .br thread, 235 .br argument, 239 .br debugging, 240 .br id, 238 .br identifier, 238 .br I/O, 247 .br library, 235 .br name, 238 .br stack, 236 .br stack dump, 242 .br switch, 237 .br synchronization, 246 .br timer, 255 .br \f(CWthreadcreate\fP, 236, 248 .br threaded server, 129 .br \f(CWthreadexits\fP, 236 .br \f(CWthreadexitsall\fP, 236 .br \f(CWthreadgetname\fP, 241 .br \f(CWthreadid\fP, 238 .br \f(CWthreadmain\fP, 236 .br \f(CWthreadname\fP, 277 .br \f(CWthreadnotify\fP, 259 .br \f(CWthreadpostmountsrv\fP, 304 .br \f(CWthreads\fP function, \f(CWacid\fP, 240 .br \f(CWthreadsetname\fP, 241 .br \f(CWthreadwaitchan\fP, 258 .br \f(CWticker.c\fP, 218 .br tickets, 330 .br semaphore, 230 .br \f(CWtid.c\fP, 238 .br tiling, 274 .br time, 44 .br access, 315 .br CPU, 111 .br elapsed, 67 .br file access, 60 .br file modification, 60 .br modification, 315 .br of day, 255 .br process, 83 .br round trip, 123 .br stamp, 268 .br system, 67 .br user, 67 .br \f(CWtime\fP, 44, 67, 255 .br command, 172 .br timeout, 106 .br timer, 107 .br thread, 255 .br \f(CWtincr.c\fP, 236 .br TLS, 343 .br to .br device, device, 66 .br type, click, 8 .br type, point, 8 .br tools, 158 .br top window, 290 .br \f(CWTopen\fP, 299, 329 .br \f(CWtouch\fP, 10 .br \f(CWtoupperrune\fP, 266 .br \f(CWtr\fP, 163 .br flag \f(CW-d\fP, 164 .br translation .br coordinate, 274 .br name, 121 .br transport protocol, 119 .br trap, 23, 42 .br tree, file, 12, 134, 139\(en140 .br \f(CWTremove\fP, 312 .br \f(CWtrinc.c\fP, 237 .br \f(CWtroff\fP, 94, 322 .br truncate, 55, 58, 92 .br \f(CWTstat\fP, 300 .br \f(CWTversion\fP, 297 .br \f(CWTwalk\fP, 299 .br \f(CWTwrite\fP, 299 .br \f(CWTwstat\fP, 300 .br type, 114 .br CPU, 152 .br message, 296 .br \f(CWtype\fP, Qid, 298 .br types, abstract data, 1 .br typesetting, 94 .br typing a command, 9 .SH U .LP .br UDP, 119 .br \f(CWu.h\fP, 20 .br uid, 328 .br change, 341 .br client, 335 .br server, 335 .br \f(CWuid\fP, 60 .br unbuffered channel, 245 .br undefined symbol, 21 .br Unicode, 265 .br unicode code, 266 .br union, 149, 152 .br mount, 148 .br \f(CWuniq\fP, 183 .br unique .br identifier, 298 .br lines, 183 .br unit, drive, 293 .br UNIX, 3, 16, 20, 96, 118, 132, 158, 258, 318 .br \f(CWunlock\fP, 209 .br \f(CWunmount\fP, 143 .br up, 308 .br \f(CWup\fP, 230 .br updates, concurrent, 207 .br usage .br disk, 175, 182 .br memory, 193 .br \f(CWusage\fP, 34 .br \f(CW$user\fP, 38, 152 .br user, 326 .br data, 311 .br id, 60 .br id, modification, 60 .br I/O, 262 .br name, 4, 38, 152, 328 .br new, 329, 342 .br time, 67 .br \f(CWuser\fP, 46 .br users, 326 .br using files, 9 .br using \f(CWrc\fP, 158 .br UTF-8, 265 .br UTF8, 15 .br \f(CWUTFmax\fP, 266 .SH V .LP .br \f(CW#v\fP device driver, 270 .br value, semaphore, 230 .br variable .br environment, 44\(en45, 64, 81, 134, 138, 158 .br expansion, 64 .br global, 28, 204 .br length, 159 .br null, 161 .br shell, 64, 158 .br variable .br \f(CWcpu\fP, 132 .br \f(CWpath\fP, 151 .br variables .br AWK, 190 .br condition, 225 .br Environment, 134 .br environment, 37 .br variables, \f(CWmk\fP, 319 .br vector, argument, 80 .br verbose output, 176 .br version .br file, 298 .br number, 216 .br VGA, 270 .br vga device, 270 .br \f(CWvga\fP, 271 .br \f(CWvgactl\fP, 270 .br \f(CW$vgasize\fP, 271, 291 .br viewer .br document, 114 .br MS Word, 114 .br PostScript, 114 .br virtual .br address space, 29 .br console, 265 .br machine, 2 .br memory, 29\(en30, 40 .br memory segment, 134 .br virus, 75 .SH W .LP .br wait for .br child process, 99 .br children, 82 .br \f(CWwait\fP, 82, 137, 172, 230, 258 .br waiting, busy, 41, 110, 213 .br \f(CWWaitmsg\fP, 83 .br channel, 258 .br \f(CWwaitpid\fP, 84, 99, 101 .br wakeup, 223 .br walk, 139\(en141, 299 .br processing, 317 .br wastebasket, 59 .br \f(CWwc\fP, 88, 94 .br flag \f(CW-w\fP, 94 .br wdir, 114 .br wdith, tab, 17 .br web, 118 .br \f(CWwerrstr\fP, 37, 83 .br \f(CWwhale\fP, 120 .br \f(CWwhatis\fP, 183 .br \f(CWwhen\fP \f(CWrc\fP script, 170\(en171 .br who last modified, file, 14 .br width, rectangle, 280 .br window, 37, 50, 146, 287 .br acquiring, 274 .br alternate, 288 .br bottom, 290 .br coordinates, 273 .br creation, 287 .br current, 290 .br hide, 290 .br image, 46 .br label, 272, 289 .br name, 274 .br new, 5, 288 .br overlap, 290 .br pid, 288 .br resize, 274\(en275, 291 .br system, 3, 5, 24, 103, 153, 262, 287 .br text, 46, 289 .br top, 290 .br \f(CWwindow\fP, 288 .br command, 152 .br library, 289 .br wishful thinking, 301 .br with holes, file, 56 .br \f(CWwlock\fP, 219 .br \f(CWwname\fP, 299 .br word .br count, 88, 94 .br search, 94 .br working directory, \f2see\fP current directory .br working directory, 134 .br write .br boundaries, 96, 120 .br CD, 175 .br console, 263 .br processing, 314 .br \f(CWwrite\fP, 22, 48, 50, 53, 56, 66, 78 .br atomic, 79 .br \f(CWwrite.c\fP, 48 .br writer, single, 219 .br \f(CWwrkey\fP, 342 .br \f(CWWRLock\fP, 219 .br \f(CWwstat\fP, 63 .br \f(CW$wsys\fP, 287 .br \f(CWwunlock\fP, 219 .SH X .LP .br \f(CWxd\fP, 15, 54\(en55 .br XML, 158 .SH Y .LP .br \f(CWyield\fP, 238 .SH Z .LP .br \f(CWzipfs\fP, 199 .br \f(CWZP\fP, 274, 286 .1C