%!PS-Adobe-1.0 %%Creator: devps (Pipeline Associates, Inc.) %%CreationDate: Fri Sep 13 13:05:49 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(PIPE)S 936(\()S 978(2)S 1036(\))S 2696(Eighth)S (Edition)296 2989 A 4911(PIPE)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(pipe)S 10 R-1 1278(-)S 10 R 1360(create)S 1627(an)S 1747(interprocess)S 2259(communication)S 2909(channel)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(pipe\(int)S 10 I 1611(\256ldes)S 10 B 1823([2]\))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 1263(pipe)S 10 R 1474(system)S 1779(call)S 1951(creates)S 2258(an)S 2379(I/O)S 2541(mechanism)S 3026(called)S 3294(a)S 3366(pipe.)S 3616(The)S 3800(\256le)S 3956(descriptors)S 4425(returned)S 4788(can)S 4955(be)S 5077(used)S 2016 V 1080(in)S 1188(read)S 1392(and)S 1566(write)S 1803(operations.)S 2301(When)S 2570(the)S 2722(pipe)S 2924(is)S (written)286 3020 A 3335(using)S 3581(the)S 3733(descriptor)S 10 I 4165(\256ldes)S 10 R 4385([1])S 4532(up)S 4661(to)S 4768(PIPE_MAX)S 2136 V 1080(bytes)S 1317(of)S 1426(data)S 1620(are)S 1770(buffered)S 2138(before)S 2422(the)S (writing)291 2571 A 2888(process)S 3216(is)S 3309(suspended.)S 3803(A)S 3902(read)S 4102(using)S 4345(the)S 4494(descriptor)S 10 I 4923(\256ldes)S 10 R 5143([0])S 2256 V (will)157 1080 A 1262(pick)S 1460(up)S 1585(the)S 1733(data.)S 2424 V 1080(PIPE_MAX)S 1598(equals)S (7168)200 1880 A (under)229 2105 A 2359(Minix,)S 2654(but)S 2807(note)S 3005(that)S 3181(most)S 3401(systems)S 3744(use)S (4096.)225 3903 A 2592 V 1080(It)S 1167(is)S 1259(assumed)S 1630(that)S 1806(after)S 2017(the)S 2165(pipe)S 2363(has)S 2522(been)S 2737(set)S 2874(up,)S 3025(two)S 3202(\(or)S 3346(more\))S (cooperating)475 3613 A 4114(processes)S 4526(\(created)S 4878(by)S 5004(subse-)S 2712 V 1080(quent)S 10 B 1328(fork)S 10 R 1538(calls\))S (will)157 1782 A 1964(pass)S 2162(data)S (through)312 2355 A 2692(the)S 2840(pipe)S 3038(with)S 10 B 3242(read)S 10 R 3463(and)S 10 B 3633(write)S 10 R 3883(calls.)S 2880 V 1080(The)S 1262(shell)S 1477(has)S 1636(a)S 1706(syntax)S 1993(to)S 2096(set)S 2233(up)S 2358(a)S 2428(linear)S 2683(array)S 2916(of)S 3025(processes)S (connected)408 3436 A 3869(by)S 3994(pipes.)S 3048 V 1080(Read)S 1324(calls)S 1546(on)S 1683(an)S 1815(empty)S 2103(pipe)S 2313(\(no)S 2485(buffered)S 2865(data\))S 3105(with)S 3322(only)S 3538(one)S 3721(end)S 3904(\(all)S 4077(write)S 4323(\256le)S 4490(descriptors)S 4970(closed\))S 3168 V 1080(returns)S 1385(an)S 1505(end-of-\256le.)S 3336 V 1080(The)S 1262(signal)S 1527(SIGPIPE)S 1923(is)S 2015(generated)S 2432(if)S 2519(a)S 2589(write)S 2822(on)S 2947(a)S 3017(pipe)S 3215(with)S 3419(only)S 3622(one)S 3792(end)S 3962(is)S 4054(attempted.)S 3504 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 3624 V 10 R 1080(The)S 1262(function)S 1622(value)S 1865(zero)S 2064(is)S 2156(returned)S 2517(if)S 2604(the)S 2752(pipe)S 2950(was)S 3132(created;)S 10 R-1 3477(-)S 10 R 3534(1)S 3609(if)S 3696(an)S 3816(error)S 4038(occurred.)S 3792 V 9 R 720(E)S 722(ER)S 780(RR)S 842(RO)S 904(OR)S 972(RS)S 1034(S)S 3912 V 10 R 1080(The)S 10 B 1262(pipe)S 10 R 1472(call)S (will)157 1643 A 1825(fail)S 1985(if:)S 4080 V 1080([EMFILE])S 1830(Too)S 2017(many)S 2265(descriptors)S 2732(are)S 2881(active.)S 4248 V 1080([ENFILE])S 1830(The)S 2012(system)S 2316(\256le)S 2470(table)S 2691(is)S 2783(full.)S 4416 V 1080([ENOSPC])S 1830(The)S 2012(pipe)S 2210(\256le)S 2364(system)S 2668(\(usually)S 3017(the)S 3165(root)S 3352(\256le)S 3506(system\))S 3844(has)S 4003(no)S 4128(free)S (inodes.)287 4311 A 4584 V 1080([EFAULT])S 1830(The)S 10 I 2012(\256ldes)S 10 R 2249(buffer)S 2521(is)S 2613(in)S 2716(an)S 2836(invalid)S 3140(area)S 3334(of)S 3443(the)S 3591(process's)S 3991(address)S (space.)249 4318 A 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(sh)S 10 R 1175(\(1\),)S 10 B 1343(read)S 10 R 1539(\(2\),)S 10 B 1707(write)S 10 R 1932(\(2\),)S 10 B 2100(fork)S 10 R 2285(\(2\).)S 5040 V 9 R 720(N)S 722(NO)S 790(OT)S 858(TE)S 916(ES)S 974(S)S 5160 V 10 R 1080(Writes)S 1374(may)S 1572(return)S 1838(ENOSPC)S 2250(errors)S 2511(if)S 2598(no)S 2723(pipe)S 2921(data)S 3114(can)S 3279(be)S 3399(buffered,)S (because)319 3791 A 4135(the)S 4283(pipe)S 4481(\256le)S 4635(system)S 4939(is)S 5031(full.)S 5328 V 9 R 720(B)S 722(BU)S 784(UG)S 852(GS)S 920(S)S 5448 V 10 R (Should)284 1080 A 1390(more)S 1623(than)S 1822(PIPE_MAX)S 2341(bytes)S 2579(be)S (necessary)392 2700 A 3118(in)S 3222(any)S 3393(pipe)S (among)273 3592 A 3891(a)S (loop)178 3962 A 4166(of)S 4276(processes,)S 4714(deadlock)S (will)157 5104 A 5568 V 1080(occur.)S 7903 V 720(Page)S 941(1)S 2616(\()S (August)290 2658 A 2973(26,)S (1985)200 3123 A 3331(\))S 4455(September)S 4911(13,)S (1996)200 5061 A 8143 V EP %%Trailer %%DocumentFonts: Times-Roman Times-Bold Times-Italic %%Pages: 1