%!PS-Adobe-1.0 %%Creator: devps (Pipeline Associates, Inc.) %%CreationDate: Fri Sep 13 13:05:37 1996 %%Pages: (atend) %%DocumentFonts: (atend) /devps 180 dict def devps begin /res 10.000000 def /y_offset 843 def /X{exch}bind def /mm {transform round X round X itransform} bind def /r{rmoveto}bind def /m{moveto}bind def /l{lineto}bind def /rl{rlineto}bind def /st{stroke}bind def /gs{gsave}bind def /gr{grestore}bind def /cp{currentpoint}bind def /np{newpath}bind def /ct{curveto}bind def systemdict /setpacking known { /savepacking currentpacking def true setpacking } if /m0{0 0 moveto}bind def /xc{//res div}bind def /yc{//res neg div //y_offset add}bind def /lc{yc X xc X l st}bind def /mc{yc X xc X m}bind def /el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr}bind def /ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st}bind def /sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct}bind def /V{//res neg div //y_offset add currentpoint pop X m}bind def /H{//res div 0 transform X round X itransform pop currentpoint X pop moveto}bind def /h{//res div 0 r}bind def /v{//res neg div 0 X r}bind def /S{X H show}bind def /A{H //res div 1 index stringwidth pop sub 1 index length div 0 3 2 roll ashow}bind def /psize 10 def /height 0 def /cheight { height 0 ne { height } { psize } ifelse } bind def /slant 0 def /FF{findfont X dup 30 div 0 mm pop setlinewidth /psize X def [psize 0 cheight slant sin slant cos div mul cheight 0 0] makefont setfont}bind def /shade{gs /dy X def /dx X def np m 0 /dy rl /dx 0 rl 0 /dy neg rl /dx neg 0 rl closepath .9 setgray fill gr}bind def 1 setlinecap /resolution res 72 mul def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def /sy y ury lly sub div def sx sy scale cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def }bind def /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto }bind def /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore }bind def /globalstart { fontnum psize slant height resolution currentpoint pagesave restore gsave }bind def /globalend { grestore moveto /resolution exch def /height exch def /slant exch def /psize exch def /fontnum exch def F /pagesave save def }bind def /fontnum 1 def systemdict /setpacking known { savepacking setpacking} if end /BP{ save mark devps begin m0 /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def }bind def /EP{ end cleartomark restore showpage}def /Encoding-1 256 array def 0 1 255 {Encoding-1 exch /.notdef put} for Encoding-1 8#301 StandardEncoding 8#101 26 getinterval putinterval %A-B Encoding-1 8#341 StandardEncoding 8#141 26 getinterval putinterval %a-b Encoding-1 8#241 StandardEncoding 8#301 16 getinterval putinterval %accents Encoding-1 8#373 StandardEncoding 8#365 1 getinterval putinterval %dotlessi Encoding-1 dup 8#41 /copyright put dup 8#42 /registered put dup 8#43 /trademark put dup 8#44 /logicalnot put dup 8#45 /Eth put dup 8#46 /eth put dup 8#47 /Thorn put dup 8#50 /thorn put dup 8#51 /brokenbar put dup 8#52 /degree put dup 8#53 /divide put dup 8#54 /multiply put dup 8#55 /minus put dup 8#56 /onehalf put dup 8#57 /onequarter put dup 8#60 /threequarters put dup 8#101 /Aacute put dup 8#102 /Acircumflex put dup 8#103 /Adieresis put dup 8#104 /Agrave put dup 8#105 /Aring put dup 8#106 /Atilde put dup 8#107 /Ccedilla put dup 8#110 /Eacute put dup 8#111 /Ecircumflex put dup 8#112 /Edieresis put dup 8#113 /Egrave put dup 8#114 /Iacute put dup 8#115 /Icircumflex put dup 8#116 /Idieresis put dup 8#117 /Igrave put dup 8#120 /Ntilde put dup 8#121 /Oacute put dup 8#122 /Ocircumflex put dup 8#123 /Odieresis put dup 8#124 /Ograve put dup 8#125 /Otilde put dup 8#126 /Scaron put dup 8#127 /Uacute put dup 8#130 /Ucircumflex put dup 8#131 /Udieresis put dup 8#132 /Ugrave put dup 8#133 /Ydieresis put dup 8#134 /Zcaron put dup 8#135 /aacute put dup 8#136 /acircumflex put dup 8#137 /adieresis put dup 8#140 /agrave put dup 8#141 /aring put dup 8#142 /atilde put dup 8#143 /ccedilla put dup 8#144 /eacute put dup 8#145 /ecircumflex put dup 8#146 /edieresis put dup 8#147 /egrave put dup 8#150 /iacute put dup 8#151 /icircumflex put dup 8#152 /idieresis put dup 8#153 /igrave put dup 8#154 /ntilde put dup 8#155 /oacute put dup 8#156 /ocircumflex put dup 8#157 /odieresis put dup 8#160 /ograve put dup 8#161 /otilde put dup 8#162 /scaron put dup 8#163 /uacute put dup 8#164 /ucircumflex put dup 8#165 /udieresis put dup 8#166 /ugrave put dup 8#167 /ydieresis put dup 8#170 /zcaron put pop /Enc-dict 30 dict def Enc-dict /tmpstr1 50 string put Enc-dict /tmpstr2 50 string put Enc-dict /tmpstr3 50 string dup (Encoding-) exch cvs pop put /AEnc-def { % arguments: the original font's name, encoding nr Enc-dict begin tmpstr2 cvs /Enc-no exch def % Remember the number in a string dup /OrigName exch def % remember the name findfont dup maxlength dict /newdict exch def % get dictionary for new font { exch dup /FID ne { exch newdict 3 1 roll put } { pop pop } % Ignore FID ifelse } forall newdict begin /Encoding tmpstr3 9 Enc-no putinterval tmpstr3 0 9 Enc-no length add getinterval cvn load def % Replace encoding currentdict /UniqueID known { /UniqueID UniqueID Enc-no cvi 49999 mul add def } if % Derive New UniqueID end % newdict /FNlength OrigName tmpstr1 cvs length def % convert name, remember length FNlength 1 add Enc-no length add string dup 0 OrigName tmpstr1 cvs putinterval dup FNlength (-) putinterval dup FNlength 1 add Enc-no putinterval dup 0 tmpstr1 0 FNlength getinterval putinterval % Add old name cvn dup newdict /FontName 3 2 roll put newdict definefont end % Enc-dict } def /Times-Roman 1 AEnc-def pop /R-1{/Times-Roman-1 FF}def /R{/Times-Roman FF}def /B{/Times-Bold FF}def /I{/Times-Italic FF}def %%EndProlog %%Page: 1 1 BP /slant 0 def /height 0 def 480 V 10 R 720(CLOSE)S 1048(\()S 1090(2)S 1148(\))S 2696(Eighth)S (Edition)296 2989 A 4799(CLOSE)S 5127(\()S 5169(2)S 5227(\))S 960 V 9 R 720(N)S 722(NA)S 790(AM)S 858(ME)S 940(E)S 1080 V 10 R 1080(close)S 10 R-1 1312(-)S 10 R 1394(delete)S 1660(a)S 1730(descriptor)S 1248 V 9 R 720(S)S 722(SY)S 774(YN)S 842(NO)S 910(OP)S 978(PS)S 1030(SI)S 1082(IS)S 1115(S)S 1368 V 10 B 1080(#include)S 1482()S 1608 V 1080(int)S 1236(close\(int)S 10 I 1633(d)S 10 B 1683(\))S 1776 V 9 R 720(D)S 722(DE)S 790(ES)S 848(SC)S 900(CR)S 962(RI)S 1024(IP)S 1057(PT)S 1109(TI)S 1167(IO)S 1200(ON)S 1268(N)S 1896 V 10 R 1080(The)S 10 B 1267(close)S 10 R 1504(call)S 1680(deletes)S 1990(a)S 2065(descriptor)S 2498(from)S 2725(the)S 2879(per-process)S 3375(object)S 3652(reference)S 4060(table.)S 4337(If)S 4436(this)S 4612(is)S 4710(the)S 4864(last)S 5035(refer-)S 2016 V 1080(ence)S 1299(to)S 1411(the)S (underlying)435 1568 A 2037(object,)S 2342(then)S 2549(it)S (will)157 2639 A 2830(be)S (deactivated.)484 2959 A 3502(For)S 3676(example,)S 4076(on)S 4210(the)S 4367(last)S 4541(close)S 4781(of)S 4898(a)S 4976(\256le)S 5138(the)S 2136 V 1080(current)S 10 I (seek)174 1397 A 10 R 1602(pointer)S 1918(associated)S 2363(with)S 2573(the)S 2727(\256le)S 2887(is)S 2985(lost;)S 3189(on)S 3320(the)S 3474(last)S 3645(close)S 3884(of)S 4000(a)S 4077(TCP/IP)S 4412(descriptor)S 4847(associated)S 2256 V 1080(naming)S 1412(information)S 1918(and)S 2094(queued)S 2415(data)S 2614(are)S 2769(discarded;)S 3213(on)S 3343(the)S 3496(last)S 3666(close)S 3903(of)S 4017(a)S 4092(\256le)S 4251(holding)S 4587(an)S 4712(advisory)S 5088(lock)S 2376 V 1080(the)S 1228(lock)S 1426(is)S 1518(released)S 1874(\(see)S 2062(further)S 10 B 2362(fcntl)S 10 R 2559(\(2\)\).)S 2544 V 1080(A)S 1180(close)S 1414(of)S 1525(all)S 1653(of)S 1764(a)S 1836(process's)S 2238(descriptors)S 2707(is)S 2801(automatic)S 3225(on)S 10 I 3352(exit)S 10 R 3506(,)S 3558(but)S 3713(since)S 3947(there)S 4177(is)S 4272(a)S 4345(limit)S 4563(on)S 4691(the)S 4842(number)S 5177(of)S 2664 V 1080(active)S 1346(descriptors)S 1813(per)S 1967(process,)S 10 B 2319(close)S 10 R 2551(is)S (necessary)392 2643 A 3060(for)S 3203(programs)S 3608(that)S 3784(deal)S 3977(with)S 4181(many)S 4429(descriptors.)S 2832 V 1080(When)S 1345(a)S 1416(process)S 1744(forks)S 1977(\(see)S 10 B 2166(fork)S 10 R 2351(\(2\)\),)S 2554(all)S 2681(descriptors)S 3149(for)S 3293(the)S 3442(new)S 3636(child)S 3863(process)S 4191(reference)S 4594(the)S 4743(same)S 4976(objects)S 2952 V 1080(as)S 1191(they)S 1391(did)S 1546(in)S 1650(the)S 1799(parent)S 2077(before)S 2361(the)S 2510(fork.)S 2754(If)S 2848(a)S 2919(new)S 3113(process)S 3441(is)S 3534(then)S 3733(to)S 3837(be)S 3958(run)S 4118(using)S 10 B 4361(execve)S 10 R 4641(\(2\),)S 4810(the)S 4959(process)S 3072 V 1080(would)S 1365(normally)S 1762(inherit)S 2059(these)S 2300(descriptors.)S 2826(Most)S 3066(of)S 3185(the)S 3343(descriptors)S 3820(can)S 3995(be)S 4125(rearranged)S 4592(with)S 10 B (dup2)218 4806 A 10 R 5024(\(2\))S 5177(or)S 3192 V 1080(deleted)S 1398(with)S 10 B 1603(close)S 10 R 1836(before)S 2120(the)S 10 B 2269(execve)S 10 R 2575(is)S 2668(attempted,)S 3116(but)S 3270(if)S 3358(some)S 3596(of)S 3706(these)S 3939(descriptors)S (will)157 4407 A (still)151 4590 A 4767(be)S 4888(needed)S 5199(if)S 3312 V 1080(the)S 10 B 1228(execve)S 10 R 1533(fails,)S 1757(it)S 1838(is)S (necessary)392 1930 A 2347(to)S 2451(arrange)S 2780(for)S 2924(them)S 3151(to)S 3255(be)S 3376(closed)S 3659(if)S 3747(the)S 10 B 3896(execve)S 10 R (succeeds.)383 4202 A 4636(For)S 4802(this)S 4973(reason,)S 3432 V 1080(the)S 1232(call)S (``fcntl\(d,)362 1407 A 1798(F_SETFD,)S 10 I (\257ags)189 2267 A 10 R (\)'')102 2456 A 2587(is)S 2683(provided,)S 3094(that)S 3274(can)S 3443(be)S 3567(used)S 3780(to)S 3887(mark)S 4123(a)S 4197(descriptor)S 4629("close)S 4906(on)S 5035(exec")S 3552 V 1080(by)S (setting)268 1205 A 1498(the)S 10 B 1646(FD_CLOEXEC)S 10 R 2354(\257ag:)S 3720 V 1440(fcntl\(d,)S 1759(F_SETFD,)S 2224(fcntl\(d,)S 2543(F_GETFD\))S 3034(|)S 3079(FD_CLOEXEC\);)S 3888 V 9 R 720(R)S 722(RE)S 784(ET)S 842(TU)S 900(UR)S 968(RN)S 1030(N)S 1121(V)S 1123(VA)S 1191(AL)S 1259(LU)S 1317(UE)S 1385(E)S 4008 V 10 R (Upon)223 1080 A (successful)414 1330 A 1771(completion,)S 2275(a)S 2347(value)S 2592(of)S 2703(0)S 2780(is)S 2874(returned.)S 3287(Otherwise,)S 3754(a)S 3826(value)S 4071(of)S 10 R-1 4182(-)S 10 R 4239(1)S 4316(is)S 4411(returned)S 4775(and)S 4948(the)S 5099(glo-)S 4128 V 1080(bal)S 1228(integer)S 1533(variable)S 10 B (errno)241 1883 A 10 R 2149(is)S 2241(set)S 2378(to)S 2481(indicate)S 2825(the)S 2973(error.)S 4296 V 9 R 720(E)S 722(ER)S 780(RR)S 842(RO)S 904(OR)S 972(RS)S 1034(S)S 4416 V 10 B 1080(Close)S 10 R (will)157 1340 A 1522(fail)S 1682(if:)S 4584 V 1080([EBADF])S 10 I 1830(D)S 10 R 1928(is)S 2020(not)S 2173(an)S 2293(active)S 2559(descriptor.)S 4752 V 9 R 720(S)S 722(SE)S 774(EE)S 832(E)S 913(A)S 915(AL)S 983(LS)S 1041(SO)S 1093(O)S 4872 V 10 B 1080(open)S 10 R 1287(\(2\),)S 10 B 1455(pipe)S 10 R 1640(\(2\),)S 10 B 1808(execve)S 10 R 2088(\(2\),)S 10 B 2256(fcntl)S 10 R 2453(\(2\).)S 7903 V 720(Page)S 941(1)S 2669(\()S 2711(May)S 2920(22,)S (1986)200 3070 A 3278(\))S 4455(September)S 4911(13,)S (1996)200 5061 A 8143 V EP %%Trailer %%DocumentFonts: Times-Roman Times-Bold Times-Italic %%Pages: 1