ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

73

Transcript of ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

Page 1: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

��������� � ������ � ������������������� ��! �#"$�&%'�(���

)#*,+.-�/10�2354 +7698:*<;�=>2@?$A9*B0�2C8EDF*,GFHJIKA9=>*BA92L2C8M*,A9=JN�2CO 4 8MG:+P2CA'G

Q'RTSVU9WYX'Z\[M]'^C_$[M^�] [a`�bced GM/>6f2C8$g�hjiLgYgYk

ljm1nporqCs1tau1v�wyxCz|{}npv$ofz~s>� ��7� xLz~��s1qCu>t�w����C�e����s��Cn�qCnpx1��{}x>q@wa�1�1��{}n�x�n�x��5wa�>{}v$�1�pwyojs}�Tt�s�v$v�s�x\�1�~s�����{�v�v$n�x1�z�{�o~�Co:��P� x>{�����w#z�m�w5�~w:{�qCwF� z�s���wM{���x��,�~s�v�{M��{�np��{�����wKo~s�u1�ataw$tas1qCw#�L��ta��{���n��,�Cnpx1�$tas�v$v�s�xty{�u1o~wyors}��npx>tas�v$�1�~wym1wyx�o�nps�x'�

��s���wF��{���wKn�o�x1s�zju1x1n��,s��~v����Yw:q1{}xCz����@ jnp�p�>�YwKo�wy�pw:t�z�np��w�¡�{}n�v�w:q\{�zrq¢wyo�ta�~np�1npx1�${�o~�>w:t�z�oKs���� jm1n�t�m�{���w�x1s�zj�1�~wyo�wFxLzKnpx@s�z~m1wy�r��{}x1��u>{}��wyojs���{}��w5qCn�£�wy��wFxLz¤z�s� jm>{�zr{#�1�~s�����{�v�v$wy��,�~s�v¥{}x1s�z~m1wy�j��{�x1��u>{���wrv�n���mCz�w��¢�Yw:tazM�j¦1s��|{��,u�����qCwyoata��np�1z~nps�x@s��f���~wa�,wy�¤z�s#s�x1wKs��9z�m1wve{}xC�5�YsCs��Cojnpx$z�m�w �1np�1�pnps����a{��1mC�C�ljm1wK§>�~o�z¤�>{��~zrs��9z�m1w#qCs1tau1v$wFxLzjnpoK{�x@npxC�,s��~ve{}�1npxLz~��s1qCu>t�z�nps�x@z�s$�K��¨j�,z~wy�rz~m1wK§>�~o�z

o�wFz�s}�(wa�1wy�atanpo�wyo\{\v�s���w tas�v$�1�~wym1wyx�o�np��w\qCwyoata��np�1z~n�s�x�s}�(o�s�v$w¤�,w:{}z�u1�~wyo npor��np��wyx'�¤¨j�Bz�wy�z�m�w\§>x>{}�fo�wFz5s}�|wa�1wy�atanpo�wyo\o~wy�pw:taz~w:q7z�s���n©t�o5{��~wetas���wy��w:q&�«ªjs�z~w\z�m>{}z z�m�w$wa�1wy�atanpo�wyo${}x>qwa�>{�v��1�pwyo��,s��~v¬{}x5npxCz�wy����{}�1�>{��~zfs���z�m�w�tas�u1��o~w�¡1tas�xCza{�npx1npx1�rnpxC�Bs���v@{�z~n�s�xKx1s�z(q¢u1�1�pn�ty{�z~w:qwy�po�wF jm1wy��w��fljm1wKtau1���~wyxCzj��wy�~o�nps�x�s���z�m1npojqCs1tau1v�wyxCzfnpo({M��{�np��{��1�pwfs�x1�pnpx1w��9­Cwywr�Y{���wr®}¯K�,s��qCwyza{�np�po:��j{��~s��pwf°r�pwynpx {�xYq�ª±n�t�� ²«tF³'{��~wyx\´<�j{�v\�1�~n©q¢��w'��s�v��1u1z~wy�'³'{}�>µy¡F¨rx>qC� ¶9np�Ywy�:¡��j{}v$�C�

�Ywy�p�r²@n�q1qC�pwyz�s�x·{}x>q¹¸C{�v$wFo�²«{}z�m1wFo�s�xº´<�j» �f¼ µy¡ft�s�xCz��~n���u1z�s���o\z�s7½�¾}¿LÀjÁ�ÂCÃ}Ä¢Å�Áa½e{}x>q��{��~nps�u1o9��wM{�qCwy�~ojm>{M��wr{}�p�1m1wy�p�Yw:q\ jnpz�m\z~m1npo(qCs1tau1v�wyxCz:��¨r�p�Yo�u1����wyo~z�nps�x1o�{�x>q�tas��~��w:taz~nps�x1oo�m�s�u1��q���s#z�s\ljnpv¥³&s���w�¡1�j» �f¼ ´Bz��1��Ƥwyx1�Y� tF{�v��Ç{�t�� u1�1µy�

��s��C�C��np��mLz tȺÉMÊ�Ê ®#�C��l � ¶9�Y³�s���w��jljm1npo�q¢s¢t�u1v$wyxCzjv@{M�$�Yw5tas���n�wMq��,��wFwy�p�@�,s��jz~m1w#�1u1�<��Ys�o�wFo�s}�1w:qCu>ty{}z�nps�x#{�x>qKx�s�xC��tas�v�v$wy�atan�{��M��wyo~w:{��at~m'�f�j{�v\�1�~n�qC��w9»jx1np��wF��o�npz<� � x1��npx1wywy�~n�x��¼ wy�>{}��z�v�wyxCz:¡1�j{}v\�1��n�qC��wr�jË(Ì É ¶fÍ9¡ � x�����{�x>q&�

É

Page 2: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�������������� �������������

� �������������

��������� ��!#"�$ ��%&�'� () *+�',.-�%&/102��%&�'�435�6087:92; <=?>�02� %&08@�/192;�02��!4A�%1��9B� 08/C; D( E�7'7:� 9F7'02��9G; D< *+�'��;���� "�$ ��%&�'��; HDJI�K59F�L$ %M;N9G;O� �GPQ *+�'����� 0:$R�6%1�:��; �:�HJS5"���$ ��%&�'��; �G=TJUV�:%1����9F�L; �B(�2PW35�6� %1��7X; �GD�'�YI�K59F�L$ %M;N9G;Z) �GT�2)\[]9B^5_��:�L!�;R`baZ-�9F� 02�6�'�L;�02��!4c]92$ /102� 02��%&�'��; )2(É Ì�� É °¤wy�C �s���q¢o �K�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� Ì}¯É Ì�� Ì4d¤�Ywy��{}z�s��~o¬�K�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� Ì}¯É Ì�� e ¼ w:ta��{}��{�z~nps�x1o �K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� Ìgf

�2=\hi9F,.�:� ^4E�/1/&��$R02�6%1�'� ):D�F(\����-�"��gj'ak"��6-�"#� ):HÉ ¯Y� É ¦�np�pw �ml d u1x>qCwF��»jx�n � � �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� ÌgnÉ ¯Y� Ì � xCz�wF��{�t�z�np��w$�K�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe ÉÉ ¯>�ÇÌ1� É d¤u1z~�1u1z � �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe ÉÉ ¯>�ÇÌ1�ÇÌ � x��1u1z.�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe É

�2<W35�:"��L$ 9\Sp%1/&9]�:� 7'02��%M;�02��%1�:� =:)É f�� É ¶9�~wy�1�~s¢t�wyo�o~wy�5¦Y{�tanp�pnpz�npwyo��K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe�ÌÉ f�� ÌP²@u���z~np�1�pw�­Cs�u1��taw#¦'np�pwyo#� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oegeÉ f�� eP²«{}��w#���K� �K�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe}¯

�2D\c]9B@�"�7'7:%1��7 =:<É ®�� É »±z�np�pn�z~npwyo|{}x>q���s�u1z�npx1wyo�� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oegfÉ ®�� ÌP­Cs�v$wr��s�v$v$s�x5v�npo�z�{}��wyo7���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oe�®É ®1�ÇÌ1� É ² n�oatawy�p��{�x1wFs�u1o�� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����oegqÉ ®1�ÇÌ1�ÇÌ q¢w:ta��{��a{�z�nps�x$v$npo~ve{�zat~m �K�K� �K�K�K� �K�������K�K� �K�K� �K�K������¯FrÉ ®1�ÇÌ1�se v@{��p�ps1t«�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K������¯ ÉÉ ®1�ÇÌ1� ¯¬¦�npx>q z�m1w ��u1� � �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K������¯CÌ

� Q I�K59F�L$ %M;N9G;Z= (X<�2H\hi�:� 9t%&�#um�'� ,.02�6%1�2� (XH

Ì

Page 3: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

��� � ����� ����� �� ��� 5�i� ��� ����� ��

EJI�K502,.-�/192; (XT¨5� É ��s�v$ve{MxYq5³&n�x�w {}����u1v$wyxCz~o��K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K������¯ ʨ5�ÇÌ »±o�npx1�����¾�����¡C��{�xYqCs�v xCu1v\�Ywy�~or{�x>q z�m1w5t���s1t~� �����K�K� �K�K� �K�K������¯ ʨ5�se �j{}���pnpx1� s�z�m1wF�j�1��s�����{}v$oK�K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����ofgr¨5� ¯ ³&n�x���w:q�³�npo�z~oe�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����ofgr¨5�sf »±o�npx1�#�>s�n�xCz~wy��o¤n�x�o�z�wM{�q�s��f{����a{M�Coe�K� �K�K�K� �K�������K�K� �K�K� �K�K�����of�̨5�Ç®�¨ q1{}z�{ §>�pz�wy�\�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����ofge¨5�sq��±w:{�qCnpx1� ¼ np��w:taz~s��~n�wFor�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����of}¯¨5�sn��¤u1wywFx1o:�T��w:tau���o�nps�x�{�x>q��1npzr{}��npz�m1v�wyz�n�t��K�K� �K�������K�K� �K�K� �K�K�����ofgf

� hi�:� 9t�:� E�� � 0F^�; <:<Ër� É ²@u���z~n�qCnpv$wyx1o~nps�x>{}�1¨r�~��{M�Co\���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����ofgfËr�ÇÌ �~w:{��p�ps1t �K� �K�K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����of�®

*J35%&7'��02/C; 02��! 9F� � �'����02��!#/1%&��7 < Qc����! #"%$ <:H¼ � É ��s�xL��wy��z~npx1�5z~s ���! #"%$ �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����of Ê

IJhi02�&� ; D:P� � É ¦�s��~z���{}xe{}x>q@���K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� ®ge

S *+08/&/1%&��7 S �:� ��� 02� um� �:, * D2(')( -b!#02�6%1��7\�&��%M;�!#��$ "�,.9F��� D2(* 3502,.-�/&9]02��;�_�9F�L;��6�.9FK59F�L$ %M;N9G; D:<+ � É � �1wy�atanpo�wyo É �K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� ®gf+ �ÇÌ � �1wy�atanpo�wyo Ì �K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� ®gq+ �se � �1wy�atanpo�wyo�e �K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� ®gn

,.-��#� ��/10 �32 �5476��98:6<;92 �U�� �'7:� 02, UV027:9 c]9G;�$ � %1-��6%1�2�= Ã���>C½��9Á�½ ¯ �>{�o~n�tao�?�@�A>MÄ1ÅA��Áa½ É ® o�z~��npx1��oÃ��@�1Ã�B�Áa½ É:Ê Ì ¼ {}����{M�Co¿>ÃLÂCÂC¾�½�>:Ä1Å�Áa½ ÌLq ve{}���ps1tC >}Â#D��9Áa½ Ì Ê §>�pwKn l sÂ#>:Ä�D Ä�EC¿F�9Áa½ eLr §>�pz�wy�

,.-��#� ��/1GH-�8JI6�� �

É ��s�v$�1np��{�z~n�s�x\­Cza{���wFo$�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K����� fÌ ³&n�x���w:q�³�npo�z �K�K� �K�K� �K���K� �K�K� �K�K�K� �K�������K�K� �K�K� �K�K�����of É

e

Page 4: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� � ��� ��� � ��� � ���

� � ��� 6���� I� p��-��O�

�"! oj�>s��1u1��{��~npz<�\m>{�ojnpx>ta�~w:{�o~w:q«{}or»jx1n��emY{�oj�Yw:tas�v�wKv$s��~wr jn�qCwyo~�1��wM{�q�� � zjn�or{$#>wa�1np�1�pw�¡tas�x>tanpo�w5{}x>q�o�v@{��p�1��{�x1��u>{���w�¡C jnpz�m@{#v$n��5s��f�ps� ��<��wF��wy��{�o~o�wyv\�1�pwy� � o~z<�C��w tas�v$v@{�x>qCof{}x>qm1np��m¢� �pwy��wy�'tas�v�ve{}x>qCo:� � z�! ojv\u>t~m$u1o~w:q@ jnpz�m�z�m1w&% ����{}�1m1n�taojo~�Lo~z�wyv�{}x>q\npx>t���w:{}o�npx1���p��,s��jxLu�v$wy�~n©tF{���{�x>{}���Co~n�oM�'ljm�wr§Y��o�z('*),+�-*.0/�1¤o�z�{}x>q1{}��q@�� j{�or{}orqCwyoata��np�Yw:q@npx32 q�4�{}x>q�npos��Bz�wyx«�Cx1s� jx«{}o6587:9<;��1ljm�w5tau1�~��wyxCz o~z�{�xYq1{��aq@npo ���� �"H$ 2 É Ì�4�npx@ jm1n�t�m�z�m1w#o�s�u1��tawtas�xLza{�npx1w:q�npx$z~m1npo|q¢s¢t�u1v$wyxCzjnpo� j��npz�z~wyx'�f��m1w:t~�@��s�u1����s1ty{}�'qCs1tau1v�wyxCz�{�z~nps�x\z�s\o~wywKm1s� z�s$t�s�v$��n��pwjz~m1w tas1qCw�� � x@z~m1nporqCs1tau1v$wFxLza{�z~n�s�x«½C½>= � Ã# jnp�����YwKu1o�wMq��l9s�z~m1s�o~we jm�s¹m>{M��w��1��s�����{}v$v�w:q«�Ywa�,s���w�¡�o~n�v��1�pw$� ����s�����{}v$o o~m1s�u1��qCx?! z#�Ywez~sCsm>{}��q�z�s\�~w:{�q��f­¢u1�1�Ys�o�w���s�u@ty{��p��z�m1npo��1��s�����{}v = Ã#��>C½@�9Áa½@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH>MÄ��P¿�D}Ã}ÄKJ&>MÄ!��ÃL >MÄ!� =?MN� D?��E���ÄOJyÃQP =RMTS UV

W

>MÄ��P¿>Ã�>MÄKJ MN>MÄ��7>XLZY V>MÄ�� Ã}ÄF�\[AD?� V

SE] ½�¾}¿C¿�D:Ä��A�JÃ�� D^A¢¾}Ä�D·Â#>T_�D���FF>�� ]ES>a`cb VYQ`cd V

Ã}Ä���[AD?�c` ¿�D}Ã}ÄKJ&>XLY MeVÀ��A>:Ä�� C J\f�g�F�D�¿�D}Ã}Ä�¾ Cah A Ã}ÄiA h A >@� h ABj�ÄXfkL >XLlYL�Ã}Ä��\[ D?� MeVD\mA> �nJ0o MeV

Wªjs�z�w z~m>{�zjz~m1wKo�s�u���taw npo��,�~wywa�B�,s��~ve{}z|{}x>q$ty{}o�w v@{�z~z�wy�~o:�¨r�p���º����s�����{}v$ojx1wywMq�{�¿�Ã#>MÄ$�Bu1x>taz~n�s�x« jm1wy�~w5w��¢wMtau1z�nps�x��Ywy��npx1oM� � x�z�m1nporw���{}v$�1�pwo�s�v$w ��{}��n�{�����wFo��ps1ty{}��z~s@¿>Ã#>:Ä�{}��w$ta�~w:{�z~w:q¹{�x>q¹{}o�o~n���x1w:q ´,u1o~npx1�qpr`e!Y��{}z�m1wF�5z~m>{�x^p�st`e!p�

¨r�po~s¹x1s�z~wez~m>{�z�p V !jnpo${�o�za{�z~wyv$wyxCz\z~wy��v�n�xY{�z�s��5�a{�z~m1wy�$z~m>{�x�{�o~wy�>{��a{�z~s��e{}o\npz5npo\npxu Ã#�L½�ÃCÂCµy��ljm1wyx@{K�,u�x>taz�nps�x#¿FD�Ã}Ä\n�ojty{}���pw:q z�m>{}z|tF{���tau1��{�z~wyo�z�m1wKv$wM{�x\s��'z~m1w {��~��u1v�wyxCz�o��np��wyx@n�zM�9ljm1w z<�C�Ywyors}� z~m1w¤�,s��~ve{}�>�>{}��{}v$wyz~wy��ojs}� z~m1wK�,u�x>taz�nps�x�´Bnpxez~m1nporty{�o~w5Ã${}x>q = µo�m�s�u1��q@�Yw�t�s�v$�Y{�z�np�1�pw¤ jn�z~m«z�m�w�{�taz�u>{}�9�>{��a{�v$wFz�wy�~ornpx«z�m�w�ty{}�p� �±ljm1w npx1npz�n�{�����{��pu1wyo¤s��Ã${}x>q = {��~w t�s��1npw:q �,�~s�v z�m1wK��{��~n�{��1�pwyo�v$wyxCz~n�s�x1w:q n�x�z�m1w#ty{��p�9´ >�Ã}ÄBAcYCµy�ljm1w\�Bu1x>taz~n�s�x�¿�D}Ã}Ĺ��wyz~u1��x�o5z~m1we{}x1o� �wy��´ {�x7npxLz~wy��wF�:¡9m1wyxYtaw@z�m1wvp >MÄ��k!Y�>wa�Bs���w�z�m1w

�,u1xYtaz�nps�x�x>{}v$w:µF¡> jm�n©t~m�npo�����npxCz�w:q�s�u1zKu1o~npx1��À!�A>MÄ�� C �Kljm�w\s�xC�<�pn�x�w ve{}xLuY{��'�Y{���w\qCwa�o�t���np�>wFo�À!�A>MÄ�� C �,u1�p�p�L��¦�s��fx�s�  ¡wau�o�zfx1s�z�w¤z�m>{}zfz�m1w É o~z({��~��u1v�wyxCz�z~sKÀ��A>:Ä�� C npo({Ko~z��~n�x��npx\ jm1n�t~m\n�oTwyv\�>wMq1qCw:q��,s���v@{�z9o�z~��npx1��oTx h A��,s��Tn�xCz~wy��wy�~o:¡ h�C �,s��f�~w:{��po({}x>q h �r�Bs��fo~z���npx1��o:�ljm1w#��{��~n©{}�1�pwyorz~m>{�zKz~m1wyo�w �,s��~ve{}zjo�z��~npx1��oK��w��,wy� z~s {}��w\{�q1q¢w:q«z~s@z�m1w\{��~��u1v�wyxCzr�pnpo�zKs��À��A>:Ä�� C �'ljm�w8pyj}ÄX!1t~m>{��a{�taz~wy��ty{}u1o�wFo�{\ty{}����n�{}��wK��wyz~u1��x��������s�����{}v$o�o�z�s��@ jm1wyx� ljm1wKwyx>q@s}�'¿>Ã#>:Ä$npoj�~w:{�t~m1w:q&�� ¨rx D\m >?�J M tF{��p�'npo���w:{�t�m�w:q��� ljm1wK�1��s�����{}v npojnpxLz~wy���~u1�1z~w:q@npx@o�s�v�wr j{M�L�� ljm1wK�1��s�����{}v¥ta�a{�o�m�wyo

¯

Page 5: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � �����l� � � �V� � �� 5�e� � ��

� � � � �

� � � ���� �� � ¦�np�pw� ����������� ����������������� !�"�#$���%������$�� &'�(���� �

npx>t���uYqCw¤§>�pwyou�o�wy�T! o u1o�wF��! ors��*waw:taz�§>�pwyo

npx>t���uYqCw¤§>�pwyoo~�Co�z�wFv

o��Co�z~wyv��pn�����{��~npwyo

­¢s�u1�ataw¦�n��pw � �¢wMtau1z�{}�1�pwd¤�*wawMtaz

¦�np��u1�~w É �9��s�v$��n���{}z�nps�x\­Cz�{}��wyo

ljm1npo(����s�����{}v tF{�x\�Yw�tas�v$�1np�pw:q�u1o�npx1�(pp½C½>= � Ãc=C¾ = Ã#��>C½@� = Ã#��>L½��9Áa½B!��&ljm1w*)�=C¾�+s���z�nps�x@��wFx>{�v�wyojz�m1w���wyo~u1�pz�npx1�#§>�pw = Ã#��>L½�� �a{�z�m�wy�rz~m>{�x«z~m1w5qCw�� {�u1�pzrÃTÁ�¾ E!���<�±u1x@n�zj�C�z<�C�1npx1�&p = Ã#��>C½��i!p��¨ºtas�v�v$s�xKv�n�o~z�{}��w�z�m>{}zf�>wF��npx1x1wy�~ojve{}��w�n�oTz�s5ty{}�p�1z�m1wFn���wa�1w:tau�z�{�����wp �AD@�?�k!p��l��L��n�x��:�AD@�?�#npof�pn���wy�p�5z~s ��u�x$z�m�w �AD��?� �<{�tanp�pnpz<� �1u1np�pzfnpxCz�s z~m1wro~m1wy�p�<¡C�1��s1qCu>t�n�x��x1s¹npx1�1u�z:¡���{}z�m1wy��z�m>{}xPz�m1w@u1o~wy��! o@�1��s����a{�v��7ljm1npo$ty{}x·�Yw�tanp�atau1v\��wFxLz~w:q7�C�Jz<�C�1npx1�Á S � D��?�@�1u1z s�x1w\v$np��mLzwau1o~z {}o  �wy�p�({M��s�n©q �1��s�����{}v�x>{}v$wyoKz~m>{�z v�np��mCzj�>w�x>{�v�wyoKs��u1x1n�� �<{�tanp�pnpz�npwyo:� � �V��s�uX! ��w�u1o~n�x���z~m1w _��TF5o�m1wF����z�m1wyx\z<�C�1npx1�&p [�F�D:Ä�½�D-,/.$0213.!425 67425/8\!M jnp�p�z�wF������s�u@ jm1wyz~m1wy�¤z�m1wy�~w*! o�{}���~w:{�q¢�e{ � {�tanp�pnpz<�\ jnpz�m$z~m>{�zjxY{�v$w��

9 � �J2;: -2<�;���-��O�>=Z��;:8Z� �

¦�np��o�zKz~m1w@?BA)DCEA1T.�)GFGF�1�A ½:ÀCÀ«npoK��u1x'�Kljm�n�oKo~z���np�1oKs�u1z tas�v�v$wyxCz�or{}x>q@npxCz�wy�~�1��wFz�o5qCnp�~w:t~�z�np��wyoK´,�pnpx1wyo� jnpz�m«{(p @ !Ct�mY{���{�taz�wF�rnpx$z~m1wK§>�~o�zrtas���u�v$x>µF��ljm1w&p @ >MÄ�½� EiAADB!�qCnp�~w:taz�np��w��~w:{�qnpx«z�m�w x>{�v�w:q §>�pw�¡Y�psLs��Cn�x�� �,s��rz~m1wK§>�pw npx«z~m1w5qCnp��wMtaz�s���� S E��?� S >MÄ�½�Â?EBAAD1� � x>t���uYqCw §Y��wFom>{M��w�{ p�ÁGFX!1o~u�H\���C�«tas�xC��wyxCz�nps�x'¡�{�x>q@o~m1s�u��©q¢xX! z�tas�xLza{�npx�wa�1w:tau1za{��1�pw$tas1qCw�¡&s�x1�p�«qCwa���npx1npz�nps�x�o�{}x>qPqCw:ta��{��a{�z~n�s�x1o:� S EF�?� S >MÄV½� EBAAD S �?�*AA>�¾TÁGF�{}x>q S EF�?� S >MÄV½� EBAAD S �?�EA1Â�> = Á�Fo�m�s�u1��q@{��p j{M�Lo��Yw npx>ta�pu>qCw:q&�d¤z~m1wy�ru�o�wa�,u���npx>t���uYqCw¤§>�pwyo�{}��w S EF�?� S >MÄV½� EBAAD S Â#>M¿�> �A��Á�F{�xYq S E��?� S >MÄ�½�Â?EBAAD S ¿�à ��F|ÁGF¹ jm1n�t~m�qCw�§>x1wJt~m>{��a{�taz~wy��npo~z�n�tao«s}�5z�m1w�ve{�t~m1npx1w�{�xYqPz�m1wve{}z�m1oTn�v��1�pwyv\wyxCz�{}z�nps�x��V¦�u1�~z�m1wy���1�~wy�1��s1tawFo�o�s���qCnp�~w:taz�np��wyojz�s\qCs  jnpz�m\v@{�ta�~s�oM¡�wyzat�¡C jnp�p��Yw�npxCz��~s1qCu>taw:q ��{�z�wF�:� � ����s�u\ j{�xCz�z�s#o�wywKm1s� Pz�m�w t�s¢q¢w��psCs��Co({E�,z�wF�(�1�~wa�<�1��s1tawyo~o�npx1�Y¡>z~���z<�C�1npx1��½L½a= � Ãa=JI = Ã���>C½��9Á�½¨j�,z~wy�\z�m�we����wy�1�~s1tawyo�o~s���t�s�v$wFo5z~m1w«tas�v��1np��wF�:¡� jm1n�t�m�{E�,z�wy�${��>{}o�o\s��\Ì��1��s1qCu>t�wyo

{�o~o�wyv\����wF�|tas1qCw��fljm1npo�n�oj{�o~o�wyv\����wMq\z�s#�1�~s¢q¢u>taw5{}x$s��*w�w:taz�§>�pw�¡Cnpx$z~m1nporty{�o~w = Ã#��>C½���Á�¾Y�¦�n�xY{��p�p�¹z�m1w«�pnpx1���<��sC{�qCwF�5�1�~s1qCu>tawyo@z~m1w«wa�1w:tau�z�{�����w��,�~s�v z~m1w�s��*waw:taz §>�pw«{�x>qP{�xC�

s�z~m1wy�js��*waw:tazj��s�u$v�wyxCz�nps�x���ljm1wKo�za{�x>q1{}��q����pnp�1��{}���#npo|{}u1z�s�ve{�z~n�ty{��p�p� tas�x1o~u1�pz�w:q&�f¨rxC�s�z~m1wy���pn�����{��~npwyo9z�m>{}zf��s�u1�(tas1qCwjx1wFw:qCojm>{M��w(z~s �>w¤v$wyxCz~n�s�x1w:qKs�x\z�m1wKtas�v��1np�pwf�pn�x�w��LKBMON�M ¡wyx>q¢n�x��«z�m1w��pn�x�w5 jnpz�m py=CÂ}¿X!>�pnpx1�Co npx¹z�m�w\ve{�z~m1oK�pn�����{��~�L¡ pr=CÂJP3Q�Q !&��npx1�CoKnpx-R ���a{��1m�n©t�o�,u1xYtaz�nps�x�o:�¹ªjs�z�w@z�m>{}z5npzT! o�x1s�z#o�u�Het�n�wFxLz#z�s(wau1o~z5mY{M��wlp @ >MÄ�½} EBAAD�C�¿>Ã���FjÁ�FIHe!'{}z z�m1wz�s��$s}��z�m�wr§Y��wKn�����s�uX! �~w�qCs�n�x�� ve{}z�m1oM�'ljm1npoXwau�o�z�o�u1�1����npwyojwFx1s�u1��m@n�x¢�,s��~ve{�z~nps�x o~s\z�m>{}zz�m�w t�s�v$��n��pwy�#ty{�xPqCs�npz~o5 �s��~�Jtas��~��w:taz~�p�L� � z$qCsCwyo�x?! z#z�wF���jz~m1w@�pn�x����<�psL{�qCwy�  jm1wF��w@z�m1wve{}z�m1o¤��s�u1z�npx1wyo#{�taz~u>{��p�p�«{���w��TS�s�u�x1wyw:q�z~semY{M��w pr=CÂ}¿X!1s�x�z~m1w$tas�v�ve{}x>q���npx1w��>wa�Bs���w{�x@wa�1w:t�u1z�{}�1�pw5ty{�x@�YwK�1��s1qCu>t�w:q��ljm1w o~z�{���wyojs��(tas�v$�1np��{�z~nps�x\ty{�x@�Yw�o~wywyx«n��f{ pr=JUk!�#V{��\npoj��np��wyx$z~s\z�m1w tas�v$�1np�pwy�:�

f

Page 6: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �E���E� �� ��� � � ��+� � ��� ��� � �

� � ;36 - ;�� <�� � ;Z��� ,.- ����6<;T<��

({}��n�{��1�pw xY{�v$wFo�ty{}xX! z��Ywy��n�x� jnpz�m¹{@qCnp��npz:� ª±s�� ty{�x¹z~m1wy��t�s�xCz�{}n�x�s��Ywy�a{�z�s���o\´B�pn���w(paÁ !s��"py=e!ǵy��ljm1wy��m>{M��w¤z�s\�Yw q¢w:ta��{��~w:q@�Ywa�,s��~wK�>wynpx1�\u�o�w:q��Tljm1w {M��{�np��{��1�pw�o�ty{}��{��jz<�C�>wFo�{��~w½TF>à ��¡ �TF>¾ ����¡�>MÄ���¡�ÂL¾}Ä1Å�¡ C ÂC¾Cà ��¡ A¢¾ E = Â#D {}x>q«ÂC¾}Ä1ÅaA1¾?E = Â#D1�K½TF�Ã��Co�{}x>q�z�m1w#��{��~n�s�u1o�pwyx1��z�m1ojs}��npxCz�wy��wy��oKty{�x@�Yw��>EÅ�Ä�D\A$´Bz�m1w#qCwa� {}u1�pz�µ�s�� ECÄ���>�Å�Ä�D\A��

d±�,z�wyx���s�u«qCs�xX! z(w��¢����n�tanpz~���\mY{M��wKz�s$tas�xC��wy�~zrz<�C�>wFo:� � �f��s�u�s��Ywy��{}z�w s�x@��{���n�{}�1�pwyojs��qCn�£�wy��wyxCz#z<�C�>wyoM¡9z<�C�>w$tas�xC��wy�~o�nps�x¹za{���wFo �1��{�taw${}u1s�v@{�z~n©tF{��p�p�L� K MON�M'n��j��s�u¹{�q�q¹{�xH>MÄ��{�xYq¹{ C ÂC¾Cà ��z�m1wyx7z�m1w >MÄ!�� jnp�p�f�>w@tas�xC��wy��z~w:q7z�s¹{ C ÂL¾CÃ���{}x>q¹z~m1w$�~wyo�u1�pz# jnp���T�>w@{C ÂC¾LÃ����ECÄ��@>�Å�Ä�D\A >MÄ��7> VC ÂC¾LÃ�� C `�TÁ2Q�� V>a` CKV jnp�p�V{}u1z�s�ve{�z~n�ty{��p�p� o�wFz:>5z~s e�¡1z~��u1x>tF{�z�npx1�\z~m1wK��w:{}�'��{}��u�w��'l9s\wa�1�1�pn�tanpz��p�\tas�xC��wy��z¤z<�L�Ywyou1o~w .�- F�/� ���N�x7KBMON�M>a` J ELÄ���>�Å�ÄFD\A >MÄ�� M C V²@s�o�zrtas�xL��wy��o~nps�x1o¤�1��wyo~wy����w z�m�w xCu1v$wy�~n�ty{��Y��{��pu1w¤�1u1zrs1tytF{�o�nps�x>{��p�p�5z~m1npojnpojx1s�zj�Ys�o~o�np�1�pw{�xYq$s���wy� #Ys� �s��j�ps�o~ojs��9�1��w:t�n�o~nps�x«�~wyo�u1�pz~o:�(�� �s�xX! z� |{}��x$��s�u@n���z~m1npojm>{��1�Ywyx1oM�ljm1w$�pwyx���z�m�s���{}x�npxCz�wF��wy�#npo�xX! zKz�m1w�o�{}v$w#s�x¹{��p�fve{�t~m1npx1wyo:� p ��>��AD�¾ C J&>MÄ�� M !Y jnp�p�

��wFz�u1�~x«z�m1w�xLu�v\�>wy��s��9�C�Lz~wyoru�o�w:q��C�e{}xenpxCz�wF��wy�M�ljm1wKo�tas��>wKs}��{ ��{}��n�{��1�pw�npo(z~m1wK�1�ps¢t~��´,z~m1w¤�,u1x>taz~nps�x'¡�s�� NaW �>{�np�aµfnpz�! o(q¢w:ta��{��~w:q�n�x�¡

s��Kz~m1w5�~wyve{}npx>qCwy�Ks���z�m1w#§>�pw#npz�! o�qCwMta��{���wMq�n�x���({}��n�{��1�pwyoKqCw:ta��{}��w:q�s�u1z�o~n©q¢w5s}�±{ �1�ps¢t~�{�xYq��,u1x>taz~nps�x1o(tF{�x$�Ywr{�tFtawyo�o~w:q��,�~s�v s�z�m�wy�f§Y��wFo(u1x���wFo�o�z�m1wy�k! ��wKqCw:ta��{}��w:q z�s �Yw:�?�1Ã�� >C½1�

({��~n�{��1�pwyo(q¢w:ta��{��~w:q\npx#�,u1xYtaz�nps�x�o|ty{}x\�1��wFo�wy�~��w z~m1wynp�(��{}�pu1w(�Ywyz< �wywyx«ty{}���pofn��'z~m1wy�${��~wqCwa§Yx1w:q�{�o9�?�¢Ã��A>C½1¡1s�z~m1wy�~ jn�o~w5z~m1wy�k! ��w\à E!�1¾}¿>Ã�� >C½1¡C��wFz�z�npx1�@�~w:ta��wM{�z�wMq��,s��¤w:{�t~m¹ty{��p�9s��z�m�wr�Bu1x>taz~n�s�x'���m>{��a{�taz~wy�#��{��pu1wyo5tF{�x¹�Yw$ j��npz~z�wyx7n�x���{��~nps�u1oK j{M�Lo�� �TKBMON�M9s�x¹ve{�t�m�n�x�wyoKz�m>{}z u1o�w

�� �$�"�"

+ � + +tj7Q\o7Q + +�j�m���Q +{��p����wy�1�~wyo�wFxLz#®LfBxYz~m1w §Y��o�zKu1o~npx1�\z�m1w#¨�­�� ��� � t~m>{��a{�taz~wy�:¡�z�m1w�o�w:tas�x>q�u1o�npx1��s¢t�z�{��f{}x>qz�m�w�z~m1np��q�m1wa�>{�qCw:tanpve{}�<�'ljm1wKx1wF j��npx1w t~m>{}��{�t�z�wy�¤n�o +�j}Ä�+y�� xCz�wy��wy��{}x>q���w:{}�'��{��pu1wFo|ty{}x@�>w ��{}��nps�u�o��p�5w��¢����wyo~o�w:q�� �

Q���� ��s�x1�#n�xCz~wy��wy� É fo7Q�� s¢t�z�{���npxLz~wy��wF� É fo�m��Bb +jwa��´,�>{}o�w É ®�µTxLu�v\�>wy�r¦�qQ��fÁ�#D��� É f��se�� É r� C¡1{ #>sL{}zQ��fÁ�#D� É f��se�� É r� C¡1{\qCs�u1����wQ��fÁ�#D��� É f��se�� É r� C¡1{#��s�x1�\qCs�u1����w

! " 8�8 6�� 89;����V�

({}��n�{��1�pwyo�s��fz~m1wKo�{�v�wrz<�C�Yw tF{�x«�YwK�1u1zjnpxCz�s\{����a{M�Co:�½TF>à �ºÂ�D?���AD?� �$#��Eo�% VqCwa§Yx1wyo {�x�{}���a{M�es}�fLr\t~m>{}��{�taz�wy�~o:¡9Â#D ���AD?�&#to�%\�Ywynpx1�$z~m1w É o�zK{�x>q�Â�D?���AD?�'#(�Bd�%\�>wFn�x��z�m�w���{}o�zrt~m>{��a{�taz~wy�:����mY{�o�x1s\o�u1��o�ta�~n���z�t~m1w:t~�Cnpx1�IxCn�����s�u���s#s�£�z~m1wKwyx>q�s��f{�x«{��~��{M�$� �s�xX! z� |{}��x@��s�u'�²@u1�pz�n�qCnpv�wyx1o�nps�x>{��>{}���a{M�LortF{�x@�>w#qCwa§>x1wMq@z�sCs>��K MON�M

½TF>à � U¢ÃC E�D��)#��Eo�%&#*Eo�%&#2Q�o+% V

®

Page 7: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �B� � �:� � � � ���

qCwa§Yx1wyo\{ e ¼ {����a{M�L�#ªjs�z�w\z�mY{�zK��s�u ty{}xX! z {�tytawFo�o\{�x�wy�pwyv$wyxCz¤u1o�npx1� U1ÃCÂ?E�D��$#�RL��L Q�% x��s�u$m>{M��wKz�s\z<�C�>w U1ÃC EFD��$#��%'#���%&#2Q %��({��~n�{��1�pwyo s}��qCn�£VwF��wyxCz#z<�L�Ywyo\ty{�x7�>w����~s�u1�Yw:q¹npxCz�s«{ F�/ A��B.�/���A)�´,�pnp��w\{ �ADL½�¾��EA«npx

u Ã#�L½�ÃCÂCµy��?��� E�½?�PÀ�D?�A�}¾}Ä N

>:Ä�� Ã�ÅAD V>:Ä�� F�D�>�Å�F!� V½�F>Ã��7�&E���Ä�Ã}¿�D$# U o�% V

W C �AD\AKL�YLÃ}Ä�D VqCwa§Yx1wyojÌKo�z~��u>taz~u1��wFojs��'z<�C�>w�À�D?�A��¾�Ä#w:{�t~m\s���e¤§>wF�©q¢o:�f¦�npwy��qCo({��~wr{�tyt�wyo�o~w:q�u1o�npx1� z~m1w"paÁ !s��Ywy�a{�z�s��:�\¦�s��Kwa�>{�v��1�pw�¡ C �AD\A�Á�Ã�ÅAD#n�o {}x�npxCz�wy��wy�  jm1n�t~m¹ty{�x��>w\u�o�w:q�npx¹{�o�o~np��x1v�wyxCz�owau1o~zr{�or{#o~n�v��1�pwj��{��~n©{}�1�pw�ty{}x'�

��B�À�D\AAD C ta��w:{}z�wyoK{#x1wy ºz<�C�>w�� K MON�M��B�ÀFD\AAD C � ����E�½?� N

>:Ä�� Ã�ÅAD V>:Ä�� F�D�>�Å�F!� V½�F>Ã��7�&E���Ä�Ã}¿�D$# U o�% V

W ÀFD?�A��¾}Ä Vta�~w:{�z~w5{#z<�C�>w ty{}���pw:q À�D?�A�}¾}Äe{}x>q��B�ÀFD\AAD C � ����E�½?� NA¢¾ E = Â#D �AD�ÃC VA¢¾ E = Â#D%>M¿>Ã�ÅA>:Ä>Ã���B V

W ½}¾}¿CÀ>Â#D�m Vta�~w:{�z~wyo {\½�¾}¿CÀ�Â#D\m#z<�L�Yw���ªjs�z~wKz�m>{}z��@B�À�D\AAD C ta�~w:{�z~wyorx1wF  ��{}��n�{��1�pw¤z<�L�Ywyo¤�1u1zjqCsCwyo�xX! zta�~w:{�z~w�{�xC� x�wy P��{���n�{}�1�pwyo:��ljm�wyo�wK{���wrt���w:{}z�w:q wau1o�z�{�o9��{��~n©{}�1�pwyo9s���z�m1wj����w:qCw�§>x1w:q z<�L�Ywyo{��~w�� �À�D?� ��¾}Ä C �AD\A L�YCÃ}Ä�D V­Cz��~u>taz~u1��w\v@{M�$�Yw�{}o�o�np��x1w:q�¡Y�>{}o�o�wMq�z�s\�Bu1x>taz~n�s�x1o�{}x>q@�~wyz�u1�~x1w:q�¡��1u1zKz~m1wy��ty{}x1x1s�z

tas�v$�>{}��w:q�¡Co~sÀ�D?� ��¾}Ä C �AD\A L�YCÃ}Ä�D VÁCÁCÁC �AD�AQ`cYCÃ}Ä�D Vnpor�Ys�o~o�np�1�pw\´,z~m1wK§>wF�©q¢o�s}� YLÃ}Ä�D5�Ywynpx1�$tas��1npw:q�n�xCz~s C �AD\A1µ��1u1z¤��s�u«ty{}xX! zrz~m1wyx«��s$s�x@z~sqCs> C J C � D\Ac`E`QYCÃ�Ä�D MC À��A>MÄ��RJ\fTg�F�DJ½�¾}À!BA>MÄ1Å [¢¾���_�D\A ¾�_ j}ÄXf MeV��s�u$m>{M��wKz�s$tas�v$�>{}��wj§Ywy��q$�C� §>wy��q��¨ro���s�u\o�wyw�¡�x1wy ���{}��n�{�����w�z<�C�>wFor{���w¤w:{�o~np���#�1�~s¢q¢u>taw:q�����m>{}zf��s�uZ.-+� /VqCs�´,�1u�z|ty{}x

npx $ PEPe{}x>q � Â�Å1¾LÂ����Cµ�npo�w��¢z~wyx>q�z�m1w#v$wM{�x1npx1�\s}�|{�x«w��¢npo~z�npx1�$s��>wF��{�z~s��#´�pÇs���wy���psL{�qk!1npzaµo�s�z�m>{}zKn�z¤ (s����Cor jnpz~m«z�m1w#x1wy  ��{��~n©{}�1�pw z<�C�>w��j��s�u«m>{M��w�z�s@ j��npz�w#{\o��Yw:tan�§Vt��Bu1x>taz~n�s�xnpx1o�z~w:{�q&�¨�ELÄ�>�¾}Ä n�o��pn���w({ �?�@��E�½?�rwa�>tawF�1zfz�mY{�z9z�m1wT§>wy��qCo9s1tytau��L�#z�m�w(oa{�v$wTv$wyv�s����j�ps1ty{}z�nps�x

 jnpz�m�wyx1s�u1��m�v$wyv�s��~�e{��p�ps1ty{�z~w:q�z�s@m1s���q�z�m1w\��{}����wFo�z npz�wFv�� ljm�w\�1��s�����{}v$v�wy�jm>{�oKz~s��wFwy�J{�x1s�z~w5s}�| jm>{}zKz�m1w9ECÄ�>�¾�Ä«npoK�>wFn�x��eu�o�w:q��,s��:� ��m>{}zr �s�u1��q�z�m1w#�Bs��p�ps� jn�x���tas1qCw�1�~n�xCzjs�u1z��

q

Page 8: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �W����� 5� 9� ��� � ��V

ÁCÁCÁECÄ�>}¾}Ä À�D?�A�}¾}Ä N

>:Ä�� Ã�ÅAD V>:Ä�� F�D�>�Å�F!� V½�F>Ã��7�&E���Ä�Ã}¿�D$# U o�% V

W C �AD\A V

C �AD�A�Á�Ã�ÅADD` U VC �AD�A�ÁGF�D�>EÅ�F��a` Q �� VÀ��A>:Ä�� C J\f ���AD\A1>�� h A B D�Ã��A�·¾CÂ�Aij}ÄXfkL C �AD\A�Á�Ã�ÅAD MeVÁCÁCÁ� � C � D\Ajo~z�{��~z�w:q#{�z�v�wyv$s������ps¢tF{�z�nps�x�ÌLrgrLr�¡yz�m�wyx C �AD�A�Á�Ã�ÅAD¢¡ C �AD\A�Á�F�D�>�Å�F!�j{�xYq C �AD\A�Á �&E���Ä>Ã�¿�D �s�u1��qK{��p���Ywy��npx {�z�v$wyv�s������ps1ty{�z~n�s�x�ÌgrLrLrTz�sCsY¡: jm�wy��w:{}o9n�x { �?����EV½?�jz~m1w9§>wy��qCo� (s�u1��qCxX! zs���wF����{��'�¤­Cs$o~wyz�z~n�x�� C �AD\A�Á�F�D�>�Å�F!�\z~s É ®Le#s���wF�� j��npz~wyo C �AD\A�Á�Ã�ÅAD�´ {�xYq@z�m1w É o�zK¯@t�mY{��<�{�t�z�wy�~ors�� C �AD\A(Á �&E���Ä�Ã}¿�D�µ�ve{��Cnpx1�¤�,�~w:q É ®ge ��w:{��~ojs���q��

� � �O�O�#� 6 I� p��-���� �

��m>{�ojz~m1w¤�,s��p�ps� jnpx1� �psCs��e{}x>q\o~wy�pw:taz~n�s�x�tas�x1o�z~��u>taz~o:� �

������������ ��

ÁCÁCÁ> C J&>*` `� M3SE] ½TF�DC½�_�>MÄ1Å C ¾�� D �?E>ÃCÂ#>?�@B V )�� `L+ � D��?�A� C ¾��7>MÄ�D � E�ÃCÂ#>?��B ]ES

SE] Ä>¾ = �1Ã�½�D@� ÄFD�D\AAD\A C ¾�� à ��>:Ä1Å1Â#D1�?�1à �ADM¿�DMÄ!� ]ESYE`�� V

D�Â#�@D NS ] ��F�D = �1Ã�½�D��·Ã�� D ÄFDC½�D����}Ã���B > C ��FFD½�ÂLà E���D3F>Ã#�¹¿>¾ �AD���F>Ã}Ä�¾}Ä�D1�?�¢Ã��ADM¿�D:Ä��]ESYE`�� V_I`�� V

WÁCÁCÁÁCÁCÁSE] �\[A> �Y½TF >��·Â#>T_�D���FFD�½}Ã#��D1�?�1Ã�� DM¿�DMÄ�� >MĺÀ>Ã��C½�ÃCÂTÁ

g�F�D U1ÃC EFD��.��F>à � �*F�D1�\[A>?�Y½�F�>MÄ1Å U¢Ã��A>�à = Â#DH>�� ½�¾}¿CÀ>à �AD\A [A> ��FF>ÃJU D��¢¾ = D�½�¾}ÄF�?�1Ã}Ä�� �XL@¾�� ) AAD C à E>Â�� +CÁ

]ES

�\[A> �Y½TFKJ&> M N½�Ã#�@D QXs À!�A>MÄ�� C J\f�>H>�� ¾}Ä�D*j�ÄXf MeV

= �AD�Ã�_ VlSE] > C1= �AD�Ã\_a[1Ã#�MÄ + � F�D?�ADXL ��FF>���½�Ã#��D�[A>�ÂLÂC ÃLÂCÂH��F��1¾ E¢Å�F >MÄ��1¾H��F�D¹Ä�D�m���Á

] S½�Ã#�@D U s À!�A>MÄ�� C J\f�>H>��%�E[1¾Ej�ÄXf MeV

= �AD�Ã�_ VAAD C à E>Â�� s5À��A>MÄ�� C J\f�>H>@� ÄFD�>?��F�D � ¾}Ä�D¹Ä>¾��1�E[1¾ j}ÄXf MeV

= �AD�Ã�_ VWÁCÁCÁ

n

Page 9: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �W����� 5� 9� ��� � ��V

� ����

ÁCÁCÁ[�F�>}Â#DkJ&>*C�Eo M N S ] � D��?� Ã��1�1¾}À ¾ C ÂC¾C¾}À ]ES�}¾}¿�D?��FF>MÄ1ÅJ MIVÁCÁCÁW

ÁCÁCÁA1¾ N

��¾}¿FD?��F�>MÄ¢ÅJ MeVW [*F�>�Â#D J >*C�Eo MIVvS ] � D��?� Ã�� = ¾����¢¾}¿�¾ C ÂC¾C¾}À ]ESÁCÁCÁljm1w&p C ¾��k!�tas�x1o�z~��u>t�z�nps�x@npx$�Pnpof��wF���$��wyx1wy�a{��<� � x$npz�o�v$s�o�z(tas�v$v�s�xK�,s���v npz�! ofv\u>t~m�pnp��w C ¾��\n�x\s�z�m1wF�j�©{}x1��uY{���wFo:��ljm1w¤�,s��p�ps� jnpx1�r�psCs���o�z�{}��z~oj jn�z~m$nYo�wyzjz~s r#{�xYq$ty{}����npwyojs�x

 jm1np�pw:>*C��\npo�z���u�w�¡�{�q1qCnpx1� É z�s\n�w:{�t�m�z�npv$wj�~s�u1x>q&�ÁCÁCÁC ¾��RJ&>*`Eo V >*C�� V >*`#>�P7Q M N

��¾}¿FD?��F�>MÄ¢ÅJ MeVWÁCÁCÁljm1wK��wFx1wy��{}���,s���v s�� p C ¾��k!�npoC ¾�� J # D\m�À��AD@����>�¾}Ä Q�% V # D\m�À�� D�����>�¾�Ä U % V # D\m�À!�AD�����>}¾}Ä �% M

�}¾}¿�D?��FF>MÄ1ÅJ MIV jm1wy�~w�{��p�jz~m1w@wa�1�1��wyo~o�nps�x�oe{��~w«s���z�nps�x>{}�<�¹ljm1w«qCwa� {}u1�pz\��{��pu1w �,s�� D\m�À�� D�����>�¾�Ä U ´Bz�m1w��� � )�tas�x>q¢n�z~nps�x>µ�npoTQ�´ ����E�D}µF� � o~o�wyxCz~n©{}�p���C¡1z~m1w C ¾��$�psCs��@npor{&[�FF>�Â#D5�psCs����fljm1w5{}�>s���wC ¾��\��sCs��$npojw��u1np��{��pwyxCz�z�sÁCÁCÁD\m�À!�AD�����>}¾}Ä/Q V�SE] >:Ä�>?�A>�ÃLÂ#>���Ã�� >�¾}Ä ]ES[�F�>}Â#D J&D\m�À�� D�����>�¾�Ä UkM N SE] ½�¾}ÄBA >?�A>�¾}Ä ]ES

��¾}¿FD?��F�>MÄ¢ÅJ MeVD\m�À!�AD�����>}¾}Ä V SE] ½�¾�AAD�A1¾�Ä�D1D�Ã�½TF >?�AD �1Ã��A>�¾�Ä ]ES

W VÁCÁCÁ

K MON�M�z�m�w$Ì#�,�a{���v�wyxCz�oj�Ywy�ps�  {��~w5w��u1np��{}��wFxLzM�&p >i!�nporo�wFz z�s e1¡Yz�m1w#�psCs��«npor�~u1x�s�x>taw�,s�� >�`�\{}x>q\s�x>tawK�,s�� >*`���¡�z�m1wFx«npz�wy�a{�z�nps�x\§>x1npo~m1wyor jm�wyx >�`��Y�C ¾�� J&> ` V >>C � V >�`#>*P7Q M�1¾��¢ÃCÂa` �1¾��¢ÃC P > V

>a` V[�F�>}Â#DkJ&>�C�� M N�¢¾��1ÃC `1�1¾��1ÃL P > V>�`#>*P7Q V

W��npz�m1npx {�xC�Ks��1z~m1w|{}�>s���wf�psCs�� tas�x�o�z��~u>taz~n�s�x1o:¡�½�¾}Ä!�A>MÄ�E�Dfo�z�s��1o9z�m1wjtau1�~��wyxCz9npz�wy�a{�z~n�s�x

{�xYq ��sLwFofz�sKz�m�wjx1wa�1z({�xYq = �AD�Ã\_ o~z�s���ofz�m1wjnpz~wy��{}z�nps�x1of{}��z~s���wyz�m1wF�:�BK MON�M�n�x#z�m�w��,s��p�ps� jnpx1��,�a{���v�wyxCz o${}x>q U  jnp�����YwK�1��npxCz�wMq@s�u1zM�ÁCÁCÁ>*`Eo V[�F�>}Â#D J&>*C�� M N

> C J&>*`E`7Q M N> ` >*P7Q V

Ê

Page 10: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �*� ���+� � � 8��q�

½}¾}Ä��A>MÄ@E�D VW> C J&>*`E`� M= �AD�Ã�_ VÀ��A>:Ä�� C J\f >�` h Aij}ÄXfkL > MeV>*`#>�P7Q V

WÁCÁCÁ� �'��s�u\ |{}xLz�{ �psCs��# jm1n�t~m\s�x1�p�#wyx>qCo� jm1wyx = �AD�Ã�_�npo(q¢s�x1w�¡C��s�u$ty{}x\u1o�w&p [�F�>}Â#DkJ�Q M !´,�Yw:ty{}u1o�w QK�Ywynpx1�\x1s�x¢���ywF��s>¡Ytas�u�xLz~o�{}oj�>wynpx1�\z~��u1wMµ�s��"p C ¾ �J VEV\M !p�ljm1w NQW o��Cv\�Ys��pof{���wKu1o~w:q�z�s5t�s�v$�Ys�u�x>q#o�za{�z�wFv$wyxCz�oM� S(s�u@ty{�x@qCw:ta��{}��wK��{��~n©{}�1�pwyo

{�zjz~m1w o~z�{��~zrs}�T{}xC�$tas�v��>s�u1x>q�o�za{�z�wFv$wyxCz:��¦1s��jnpx1o�za{�x>taw�¡1n��f��s�u?! �~wK (s�����npw:q@{}�>s�u1zjz�m1wo�t�s��Yw s��f{�x@npx>qCwa�@��{���n�{}�1�pwrnpxe{ C ¾��\�psLs��'¡C��s�uetas�u1��q@qCs5z~m1wK�,s��p��s� jnpx1�Y�N >MÄ!� > VC ¾ �nJ >*`7Q V >�C�� V >*P P MÀ�� >MÄ�� C J�f�>H>�� h ABj�ÄXfkL > MIV

W

� ��� ��6K �-����V� �

´ ­�{�v$����wjo~s��pu1z~n�s�x1or{��~wKs�x@�>{���w ®Lf�µÉ �TÀ�Ã#�C½�ÃCÂjm>{}o {|�,u1x>t�z�nps�x5tF{��p�pw:q ¾�AEAV¡}z�m>{}z'��np��wyx5{�x�n�xCz~wy��wy�9�~wyz�u1�~x1o É n��>z�m�w(xCu1v\�Ywy�n�ojs1q1q&¡2r#s�z�m�wy�� jnpo�w�� �¹��npz~w�{�x«¾�AEA#�,u1x>t�z�nps�x��,s��|�º{�x>q� j�~n�z~w {�¿�Ã#>MÄ$��s�u1z�npx1wKz~sz�wyo~zjn�zM�f´Bm1npxCzTS�s�uetF{�x$u�o�wrz~m1w¤� {�t�z(z~m>{�z�npx$�K¡�n�� >Knpo|{}x$npxCz�wy��wy��z�m1wyx^J&> SEUkMT]EUw��u>{��po > s�x����\n�� >5npojwy��wFx>µy�

Ì�� �¹��npz�w@{«�~s�u1z~n�x�wety{}���pw:q = >:Ä>Ã���B�z~m>{�z# jm1wyxPo~u1�1�1�pnpw:q7 jnpz�m·{�qCw:t�n�v@{��fxCu1v\�Ywy�M¡�1��npxCz�ojs�u1zjz�m>{}zjxCu1v\�>wF�(npx$��n�xY{����C¡Co�s = >MÄ>Ã��@BJ�Q\o M  (s�u1��q��1��npxCz(s�u1zTQ\o7Q�oU¢¾#>\A = >MÄ>à ��BJ ECÄF��>�Å�Ä�D�AH>MÄ���Ä@EC¿ = D?� M NS ] À!�A>MÄ��aAADC½@>M¿>ÃC ),Ä�EC¿ = D �B+ >MÄ = >MÄ>Ã��@B ]ESÁLÁCÁW

ljm1wyx� j��npz�w${ ¿>Ã#>:Ä«�~s�u1z~n�x�w\z�s@z�wyo~z npz:� ¼ s�xX! zK (s�������{��Ys�u1zK�pw:{�q¢n�x����ywy�~sCwyo5z~sCsv\u>t~m${�zjz�m�w v$s�v$wyxCz:��ª±s�z�wKz~m>{�z = >MÄ>à ��B\�~wyz�u1�~x1o�{�U1¾#>\A�¡Cn � w���x1s�z�m1npx1�Y�e�� �¹��npz�wr{���s�u1z�npx1wKty{��p�pw:q = Ã#��D�z~m>{�z� jm1wyx�o�u1���1�pn�wMq$ jnpz~m${5qCwMtanpve{���xLu�v\�>wy��{�x>q�{�>{�o~w�¡�����npxCz�ofs�u1zfz�mY{�zfxCu1v\�Ywy�9z�s z~m1wj��w �u�n��~w:q\�Y{�o�w�¡�o~s = Ã���DkJ�Q\oRL M  (s�u1��q ����npxCzs�u1zTQ\o7QU¢¾#>\A = Ã#��D J ECÄ���>EÅ�Ä�D\A1>MÄ��PÄ�EC¿ = D?�KLJELÄ���>�Å�ÄFD\A7>MÄ�� = Ã#��D M NS ] À!�A>MÄ��aAADC½@>M¿>ÃC ),Ä�EC¿ = D �B+�1¾1��F�DJÅA>�UAD:Ä ) = Ã#��D + ]ESÁLÁCÁW

ljm1wyx@ j��npz�w {�¿>Ã#>MÄ$��s�u�z�npx1wKz�s\z~wyo�z¤n�zM�¯Y�j¶9��npxCz({Kza{��1�pwjs��'{��p�1z~m1wr����npv$wyo9�pwyo~o(z~m>{�x É rLrLr���»±o�wK{�xC� v$wFz�m1s1q#��s�u5 j{�xCzM�9ljm1wo�npwy��w�v$wyz~m1s1q�npo�qCwFo�ta�~n��Yw:q7m1wy�~w�� ��{�npv�z�s�ta��w:{}z�w�{}xJ{��~��{M� p Ä�EL¿ = D?�k!>o~u>t~mPz�m>{}zn �TÄ@EC¿ = D?� �$# >�%a` ` u � "�� I@z�m1wyxH>\npo {��1��npv$w�xLu�v\�>wy�M� ¦�n��~o�z v@{��~�$z�m�wyv {}���f{}o�>wynpx1�#�1�~n�v�w���ljm1wyx$�~wy�Yw:{�z~w:qC�p�@�1n�t��\z~m1wKo�v@{��p�pwyo�zf����npv$wj��s�u\m>{M��wyxX! z|q¢w:{��pz� jn�z~m{�x>q�ve{}���«{��p�9npz�o v\u1�pz~n�����wFor{�o �Ywynpx1�@x1s�x��1�~n�v�w��\¶9��npxCzKs�u1zKz~m1w\�1��npv�wyo {�zKz�m1wwyx>q��<+±wy��w*! oK{#o���wF��wFz�s�x�� �

É r

Page 11: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �\�i������� ����� � ��V

@ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH@ AAD C >MÄFD u � "�� I Q SE] $ �AD}Ã��AD·ÃCÂ#>�Ã���D�� C ¾ �Qo Ã}ÄBA Q ]ES@ AAD C >MÄFD ����� u � "�� Iao>:Ä��PÄ�EC¿ = D �A�$#2Q\o oEo�% V

U¢¾#>\AP¿>Ã���_��}¿�E>Â�� >MÀ>Â#D�� J&>FÄ!� Ä�EL¿ M NS ] g ����� s D?� ÃCÂL D}Â#DM¿�DMÄ!�A�3[�F�>L½TF �ADMÀ��AD@��DMÄ��7¿@E>Â��A>MÀ�Â#D��J¾ C Ä�EL¿7�1¾ ����� u � "�� I(Á ]ESW

>:Ä���ÅAD?���}ÄFD\m����}À!�A>M¿�DkJ >MÄ��¹Ä�EC¿ M NS ] C >MÄBA1��F�D¹Ä�D\m@� À!�A>M¿�D¹Ä�EC¿ = D?� à C �AD � )BÄ�EC¿ + ] S>:Ä�� Ã}Ä��\[AD � VÃ}ÄF�\[AD?�c` Ä@EC¿IP7Q V[�FF>�Â#D J~Ä�EC¿ = D?�A�$# Ã}Ä��\[AD ��% ` ` ����� u � " � I M NÃ}Ä��\[ D?�B`PÃ}ÄF�\[AD?�cP7Q V> C JyÃ}Ä���[AD?�a`E` Q\oEoEo M= �AD�Ã\_ V

W�AD ��E���Ä�Ã}Ä���[AD?� V

W

¿�Ã#>MÄKJ M N>:Ä��7> V>:Ä��PÄ�D\m�����À��A>M¿�D VS ] g ����� s D?� ÃCÂL �*F�D1D�Â#DM¿�D:Ä��A���1¾ u � "�� I�Á � DM¿�DM¿ = D?�KL��F�D Q��?�7D�Â#DM¿FDMÄ�� >��

Ä�EC¿ = D �A�$#�o�% Ã}ÄBA1��F�D·ÂCÃ#� � >@�7Ä�EC¿ = D?�A�$#tdEdEd�% ]ESS ] g ����� s oºÃ�ÄBA Q7à �ADMÄ�+ �PÀ�� >M¿�DXL �}¾ ��D?�PÄ�EL¿ = D?�A�)#�o�%�Ã}ÄiA Ä@EC¿ = D?� �$#2Q�%�¢¾ ����� u � "�� I ]ES

ÄFD\m����}À!�A>M¿�D�` UVA¢¾ N¿>Ã���_��}¿�E>Â�� >MÀ>Â#D�� J~ÄAD�m����}À@�A>M¿�D M VÄ�D\m����}À��A>M¿FD3`�ÅAD?���}ÄFD\m����}À!�A>M¿�DkJ�Ä�D\m ���}À��A>y¿�D MIV

W [�F�>�Â�DkJ~Ä�D\m@���}À��A>:¿�DZC Q\o oEo MeV

S ] g ����� s u �A>:Ä�� ¾ E��1��F�D1>MÄBA >C½�D��J¾ C D�Â#D:¿�DMÄ��A� [�F�>C½TF�Ã�� D � �A>�ÂC ��D?�1�1¾ u � "�� I ]ES

D�mA>?�J o MeVW

ljm1w&p g ����� !��pnpx1wyorqCwFo�ta�~n��Yw# jm>{�zjtas1qCw ��s�u$x�wyw:q@z~s${�q1q�npx'�S(s�u@ty{�x@o��Ywyw:q�u1�@z�m�n�oj����s�����{}v¥tas�x�o�n�qCwy�a{��1�p�$�C����wy�1��{�tanpx1� Q\oEoEo# jm1wy�~w5{��1����s���1��n�{�z~wK�L�\o~s�v�wyz�m1npx1�#o�v@{��p�pwy�:�9­CwywK�>{}��wK¯Bf��Bs��jqCwyz�{}np��oM�

� �O��� 6<;6 p��-N��� �

� ��wyz�wy�a{�x1o�u1o�w«{}�1�1��wF�Ln�{}z�w:q �,s���v$o �,s��\wa�1�1�~wyo�o~nps�x1oM��­Cs�v�w${���w@x>{}z�u1�a{��r{}x>q7 jn©q¢wy�p�{�q¢s��1z~w:q�¡�s�z�m�wy��o#v$wy�~wy�p�«�pw:{�q�z~s@s��1oatau1��npz<� «wy��wyxJn��jz�m1wy���1�~s¢q¢u>taw\�<{�o�z~wy�5tas1qCw�´ {}x>q

É�É

Page 12: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �\�i������� ����� � ��V

s��Bz�wyx@z�m�wy�eqCs�xX! z�µ�z~m1wy�$ j{�o~z�wK�Bu1z�u1�~wK�1��s�����{}v$v�wy��oT!�z~n�v�w��� >�PEP@npo w �u�n���{}�pwyxCz z�s.>*`#>*P7QL� ljm1npo\´ {}x>q�z�m1w >*= =�qCw:ta�~wyv$wyxCz~n�x��«s��Ywy��{}z�s���µ�n�o#{tas�v�v$s�x tas�xCz���{�taz�nps�x'�9ljm1wrs��>wF��{�z~nps�x$ty{}x\�>wKqCs�x1wK{M�,z~wy��z�m1w¤��{���n�{}�1�pw(npofu1o~w:q�¡Cs��´,�C�$u1o~npx1� =E=#>1¡BPEP�>�µT�>w��,s��~w�¡1o~sÁLÁCÁ>>` � VÀ!�A>MÄ�� C J\f�>�` h ABj�ÄXfkL >*PEP M{�x>qÁLÁCÁ>>` � VÀ!�A>MÄ�� C J\f�>�` h ABj�ÄXfkLlPEP#> M jn��p���Ys�z~m«�pw:{M��w9>${�o �Y¡1��u1zrnpx@z�m1w É o~zj�,�a{���v$wyxCz&�$ jnp�p���>w#�1��npxCz�wMq@s�u1zj jm�n��pwKnpxz�m1w Ì�xYq �  jnp���<�� >�PE`���nporw��u1np��{��pwyxCz¤z�s >*`�>*P��Y�rljm�n�oKo~z<�L�pw#s��|t�s�xCz��a{�taz~n�s�x�npo~xX! zro�s«tas�v$v�s�x'¡C�1u�zty{�x@�Yw�u�o�w:q@ jnpz~mev�s�o~zfs��fz�m�w���n�xY{�����s��Ywy��{}z�s���o:�� ¨ro�o~np��x1v�wyxCzro�za{�z~wyv$wyxCz~o�mY{M��w5{ ��{��pu1w «z�m�w §>xY{��9��{��pu1w s}�(z�m�w5�pwa�,z � mY{�x>q��<o�n�qCw o�s(Yc` J&>*`�EP�� M  jnp����o�wyz > z~m1wyxlY#z�s(bY¡L{}x>q >a`cY ` _ `Qo# jnp�p�1o�wyz _'¡Cz~m1wyxlYY¡z�m1wyx >#z�s �ywy�~s>�Tljm1npof�,wM{�z�u���w o~m1s�u1��q��Yw�u�o�w:q@ jnpz~m tF{�u1z~n�s�x'�� ljm1w�p�LT!:s��>wF��{�z~s��9npo'u1o~w:q��>wyz< �wywyx\Ìjw��¢����wyo~o�nps�x1oTn �1z~m1w(��{}�pu1w9s��>z~m1w É o~z9wa�1�1��wyo~o�nps�xty{�x«�Yw np��x�s���wMq�� � z�! or{\ j{M�$z~s\�1u1z�Ì#s��rv�s���w¤o�za{�z�wFv$wyxCz�o¤ jm1wy�~w5x1s���v@{��p�p�5s�x1�p�s�x1wK �s�u1��q\��s>��K MON�M

C ¾ �J&>MÄ�> �J M L�>*`EoL�Y PEo V >*C7Q�oEo V >*PEPLYEPEP Mljm1npo��,w:{�z~u1��wKnpojs��Bz�wyx@s���wF�<�<u1o�w:q z�sCs>��P� �1�1��wyo~o�nps�x�o  jnpz�m�tas�v$�>{}��npo�s�x@s��Ywy��{}z�s��~oK��wyz~u1��x Q#n��(z�m�w�tas�v$�>{}��npo�s�x@n�o¤z��~u1w�¡Xon ��� {��po~w�¡Co�s([�F�>�Â�DkJ&>�� ` o M {�x>q [�FF>�Â#DkJ&> M {��~w w��u1np��{��pwyxCzM�� ljm1w*) > C JM½�¾�ÄBA M D\m�À/Q V D}Â#��D1D\m�À URV +�t�s�x1o~z���uYtaz�nps�x«ty{}x$�Yw {��1�1�~wy�Cn�{�z�wMq\u1o~n�x��p JM½�¾}ÄBA M�� D\m�À Q?s D\m�À U !p�>ljm�wr�Bs��p�ps� jn�x��r�B��{���v$wyxCz~o|{}��wKw��u1np��{��pwyxCz:�ÁLÁCÁ> C J�ÃE`E`�� MYE` b V

D}Â#��DYE`�� VÁLÁCÁJ�ÃE`E`�� M�� YE`Eb,stYE`�� VÁLÁCÁljm1npojx1s�za{�z�nps�x$o�m�s�u1��q\�Yw u1o~w:q@ jnpz�m@qCnpo�ta�~wyz�nps�x'�

É Ì

Page 13: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� � ����� � ���

� G I � p��-��O�O�

�¹mY{�o9x1sK�1��s1tawMqCu1��wFo:¡Cs�x����¤�,u�x>taz�nps�x1o:��ljm1wynp�fqCwa§>x�n�z~nps�x1ofty{}xX! z��Yw�x1wyo�z~w:q\��u1zf{��p�Cwa�>tawy�1z¿>Ã#>:ÄetF{�x@�>w#ty{��p�pw:q\�~w:tau1�~o�np��wF���C� � x ���� #"%$ z�m1w �,s��~v s��f{��,u1x>taz~nps�xeq¢wa§>x1npz�nps�xenpo� +����I.0/� �1+�l/��GCB)�� � + ���e.�/( �1�� �I-�� )�<J � +T1�A�(- �X- A N ���() �E/ � OF�/�� M � � 1T.�- ���\-�A �-�� � ) F��� �>s1qC����

K MON�M

>MÄ��P¿�D}Ã}ÄKJ&>MÄ!� mKL >:Ä��1B MN>MÄ��1��¿LÀ V��¿CÀ ` J�mcP B MTS UV�AD?� E���Ä ��¿CÀ VW

� xq5 7:9 ;�z�m1wKoa{�v$w±�,u1x>t�z�nps�x@ �s�u1��q\�YwK j��npz�z~wyx�{}o>MÄ��P¿�D}Ã}ÄKJ�mKL B M>MÄ��am V>MÄ��1B VN>MÄ��1��¿LÀ V��¿CÀ ` J�mcP B MTS UV�AD?� E���Ä ��¿CÀ VW

ªjs�z�w«z~m>{�z�z�m1w@�Bs���v@{��j{��~��u1v�wyxCz�qCwMta��{���{}z�nps�x�oe{��~w«qCn�£Vwy�~wyxCz��p�P�1��{�tawMq��ºljm1npoe{��~wz�m�w�v�s�o~z(�Cnpo�np�1�pw�q¢n £�wy�~wyx>taw#�>wFz< (wywFx ���! #"%$ {�x>qv587:9 ;P�1¶9�~s����a{�v�or´Bu1o�u>{}�p���$tF{��p�pw:qÀ��1¾ �1¾#>��AD�s���À!�1¾��1¾�Å DMÄ>µ9wa�1npo�z¤z�s\tas�xC��wy��z¤z�s ���� �"H$ o�z<�C�pw {}����u1v$wyxCzjqCw:ta��{}��{�z~nps�x1oM�ljm1w$qCwa�<{�u1�pzj�Bu1x>taz~n�s�x�z<�C�Yw5npo&p D\m@�AD?��Ä7>:Ä��k!>{}x>q�z�m1w$qCw�� {�u1�pz¤z<�L�Yw��,s��Kz�m�w �,s���v@{��

{��~��u1v�wyxCz�o�n�o,p >:Ä��k!y��u1zfqCwy�Ywyx>qCnpx1� s�x z�m�wyo�wrqCw�� {�u1�pz~o�npo9{�o��Cnpx1�±�,s��9z��~s�u1����w�x�z�m1wF� o�m1s�u1��q�Yw wa�1�1�pn�tanpz��p��q¢w:ta��{��~w:q��¦1u�x>taz�nps�x1ojwyx>q@ jm�wyx� wa�1w:tau1z~n�s�x��~w:{�t~m1wFo z�m1w\ta�ps�o~npx1�lp � !�s��fz�m�w �,u�x>taz�nps�x'� � ��z�m1w��,u1x>t�z�nps�x«npoKo�u��1�>s�o�w:qz�s\��wFz�u1�~x«o�s�v$wyz~m1npx1�>¡�z�m1wK�~wyz�u1�~x«��{��pu1w¤ jnp�����YwKu1x>qCw�§>x1w:q��� {(p �AD?� E���ÄX!�o~z�{}z�wyv�wyxCzjn�oj�~w:{�t~m1wMq�¡1�~wyz�u1�~x1npx1�et�s�xCz��~s���z�s\z~m1w5ty{}�p��npx1� �,u1x>taz~nps�x'�� {�xlp D\mA>?� !Co~z�{}z�wyv�wyxCz(npoj��wM{�t~m1w:q�¡YwyxYqCnpx1�5w��¢wMtau1z�nps�x«s��9z�m1w  jm�s��pwK�1��s�����{}v��¸�u1o~z|{}o �AD?��E���Ä5ty{}x$�~wyz�u1�~xe{K��{}�pu1wjz�s z~m1wrty{}���pnpx1�K��s�u1z�npx1w�¡�o~s D\mA>?� ��wyz~u1��x�or{K��{��pu1w

z�s#z�m�w��CÄ�>\m5wFxL�Cnp��s�x1v$wFxLzM��ËT�$tas�xL��wyxCz�nps�x�¡C��wyz~u1��x1npx1�\{ �ywy��s\v�w:{�x�o(z~m>{�z�z�m1wK�1�~s�����{�vm>{}o ��u1x�o�uYtytawyo~o<�,u1�p�p�C�$ËfwFz�z�wF�\o�z�np�p�<¡Y��wyz~u1��x I P " g�� � $�$ I @ s�� I�P " g���� �A" ��� � IkxCz�m1wy�k! ��wqCwa§Yx1w:q@npx �?�EA1Â#> = ÁGF'�¨r�p�C�>{��a{�v�wyz�wy�~o9n�x\�J{}��w pÇ�>{�o~o�w:q#�C� ��{}��u�w*!p��l9sr�Ywy�<�,s���v z�m1wjw��u1np��{}��wFxLz�s�� u Ã#�C½�ÃLÂe! o

pÇ�>{�o~oj�C�$��w��,wy��wFx>taw*!Y��s�u@x1wyw:q@z~s5�Cx1s�  {��Ys�u�zj�>s�n�xCz~wy��oM�

É e

Page 14: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �*��� � � �����

� 4i�9-������ 6 �

� ��wyx«n��f��s�u�qCs�xX! zju1o~w5�Ys�npxCz�wF��or��s�u1�~o�wy����¡Yz~m1w5tas1qCw#��s�uX! �����pw:{}��x@�B��s�v  jnp�p�'m>{M��w�z~m1wyv��­Cu1���>s�o�w�>�npo${�x�npxCz�wF��wy�M� l9s«§>xYqPz�m1w�{�q1qC�~wyo�o@s}� >¹z~m1w��Js��>wF��{�z~s��@npo\u1o�wMq ´�� >�µF�­Cwyz~z�npx1�¹{«�Ys�npxCz�wF�5z~s«z�m1npo#��{��pu1w���wFz�o#��s�u¹�~wa�,wy�\npx>q¢n��~w:taz~���¹z~s�z~m1w$��{}��n�{�����w >1� � �r��s�um>{M��w5z~m1w${�q1q¢��wyo~o s��r{��>s�n�xCz~wy�K��{���n�{}�1�pw5{�x>q� j{�xCz¤z�s�§>x>q�z~m1w\��{��~n©{}�1�pw*! or��{}��u�w�¡Yz�m1wyxz�m�w q¢wy��wa�Bwy��wyxYtanpx1�@s��Ywy��{}z�s�� ] npoju1o�w:q&�ÁCÁCÁ>MÄ��7> VSE] g�F�DJÄ�D\m��7�?�¢Ã��ADM¿�D:Ä��^A DC½�ÂCÃ�� D��1> �}À����%�1¾ = D·ÃPÀ>¾#>MÄ�� D?��Ã��Ã}Ä >MÄ��AD�Å D?��Á(g�FFD^A DC½�ÂCÃ��¢Ã��A>�¾}Ä ��Ã�BA����F>à � > C >��}À����7>��AAD?� D C D?�AD:Ä�½�D\AKL$¾}Ä�D·ÅAD?�A�·Ã}Ä >MÄ!��Á

]ES>MÄ�� ] >��}À���� V> �}À!���c`�� > VqSE] >MÄF>?�A>�ÃCÂ�>���DH> ��À����H�1¾PÀ>¾#>MÄ!� �¢¾ > ]ESSE] g�F�D C ¾CÂCÂL¾�[A>MÄ1Å U Â�>MÄ�D��1D�Ã�½�F �@D?�7>H�1¾ � ] S>a` � V] >MÀ!���c` � VqSE] >9Á D�Á �@D?�1�1¾ �H��F�D1>MÄ!� ��F>à � >:À����7À>¾�>MÄ��A���1¾ ]ES¶�s�npxCz�wy�~o�{}��wyxX! zBwau1o~z'v�wyv$s����j{�q1qC�~wyo�o~wyo�xCz~m1wy� mY{M��wfz<�C�Ywyo:��¨J�Ys�npxCz�wy� � z~s���{�xC� >MÄ��rnpo<>MÄ�� ]{�xYq«npoKs��r{@qCn�£Vwy�~wyxCz z<�C�>w#z�s«{��Ys�npxCz�wy� � z~s���{M�a½�F>Ã���´, jm1n�t~m�n�o#½TF>Ã�� ] µF� ljm1w$qCn�£�wy��wFx>tawve{}z�z~wy��ojwyo~�>wMtan�{��p�p�e jm�wyx�z~m1w �Ys�npxCz�wy�¤npor�Ywynpx1�$npx>ta�~wyv$wFxLz~w:qkxYz�m�w ��{��pu1wKs��fz~m1w5�Ys�npxCz�wF�npojnpx>ta��wM{�o�wMq@�C�$z�m�w�o~n �yw s��9z�m1w�s��*waw:t�zjn�zj�Ys�npxCz�o�z�sY�f­Cs\n��� �w {�q1qCwMq

>:À����B`#>:À����BP7Q Vnpx\z�m1w {}�>s���wrwa�>{�v��1�pw�¡�z~m1wyx >MÀ!���# (s�u1��qCxX! z9�>wKnpx>ta�~wyv$wFxLz~w:q\�C� É ´B jm1n�t~m$ �s�u1��q#ve{}��wnpzf�Ys�npxCz�o~s�v�wy jm1wy�~wrnpx5z~m1wrv�n�q1qC�pwfs��<>�µ9��u1zf�C�5z~m1wj�pwyx1��z�m\s���{}x >MÄ!��¡�o~s z�mY{�zfnpzf �s�u1��q�Ys�npxCzjz�s\z�m�w�v�wyv$s����#�ps¢tF{�z�nps�x wau1o~zj�>wF��s�xYq >1�9ljm1npojn�oju�o�wa�,u��'n���>5npo(�Y{���z¤s��f{�x«{��~��{M�C�� x@z�m1w¤�,s��p��s� jnpx1� �,��{}��v$wFxLzM¡�z~m1wK�>s�npxLz~wy�jo�z~wy�1o¤z�m1�~s�u1��m {}x«{����a{M�L�ÁCÁCÁ>MÄ��PÄ�EL¿ = D?�A�)#2Q\o�% V>MÄ�� ] >:À���� V>MÄ��7> VÄ�EC¿ = D?�A�$#to�%a` Q VÄ�EC¿ = D?�A�$# Q�%a` UVÄ�EC¿ = D?�A�$# U %a` V

>MÀ��@�Q`���Ä�EC¿ = D?�A�$#to�% V�SE] u ¾#>MÄ��7>MÀ!���1�1¾H��F�D C >?�A�?� D}Â#DM¿�DMÄ!� >:Ä�Ä@EC¿ = D?� �$#(% ]ES

SE] Ä>¾�[ >MÄ�½?� DM¿�DMÄ��1>MÀ��@� �¢¾ À>¾#>:Ä��1�1¾ �&E�½C½�D@����>�UAD%D�Â#DM¿�D:Ä��A� ]ESC ¾�� J&>�`Eo V >*C� V >*P P M NÀ��A>:Ä�� C J\f ] >MÀ����1>�� h ABj}ÄXf L ] >MÀ��@� MeV>MÀ��@�B` >MÀ����BPEQ V

WÁCÁCÁ¶�s�npxCz�wy�~o${���w�wyo��Yw:tan�{��p�p�¹u1o~wa�,u1�¤ jm1wyxP�,u�x>taz�nps�x1o5s��>wF��{�z~w«s�xPo~z���uYtaz�u1�~wyo:� »±o�npx1�¹{

�Ys�npxCz�wy�r{M��s�n�qCojtas��1npwyojs}�f�>s�z�wyxCz�n�{}���p�#�1np�\o�z~��u>taz~u1��wFo��Ywynpx1�\v@{�qCw����B�ÀFD\AAD C � ����E�½?� N

>:Ä�� Ã�ÅAD V

É ¯

Page 15: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �*��� � � �����

>:Ä�� F�D�>�Å�F!� V½�F>Ã��7�&E���Ä�Ã}¿�D$# U o�% V

W ÀFD?�A��¾}Ä VÀ�D?� ��¾}Ä C �AD\A L�YCÃ}Ä�D V>MÄ��7�&EL¿��C¾ C �LÃ�ÅAD��kJ�À�D?�A��¾�Ä ] À�D?�A�}¾}Ä/QkL ÀFD?�A��¾}Ä ] ÀFD?�A��¾}Ä UkM N>MÄ��7�&EL¿ V SE] à U1à �A>�à = Â�DJÂC¾�½�ÃL �¢¾ �*F�>�� C ECÄ�½ �A>�¾}ÄjÁ ]ES

SE] � D?�AD C D?�ADMÄV½�D �*F�D¹À>¾#>MÄ�� D?�A�XL �*F�DMÄ1E���D���F�D )CÁ +«¾}À�D �1Ã��1¾��%�1¾PÅAD?�1��F�DC >�D�Â*AA� ]ES

�&EL¿ ` J ] À�D �A��¾}Ä/Q M Á�Ã�ÅAD P J ] À�D �A��¾}Ä U M Á�Ã�ÅAD V�AD ��E���Ä �&EC¿ V

W

d¤�>wF��{�z~nps�x1o9�pnp��w6J ] À�D �A��¾}Ä/Q M Á�Ã�ÅAD({���w�o�sKtas�v�v$s�xrz�mY{�z9z�m1wF��w*! o({±o��Yw:tan�{��<¡�v�s���w9x>{}z�u1�a{��x1s�z�{�z~nps�x\�Bs��jnpz:�&À�D �A��¾}Ä/Q�=EHCÃ�ÅAD¢�l9s\�,u1�~z�m1wF� np���pu1o~z��a{�z�w�z�m1w#u1o�w\s}�(�Ys�npxCz�wy�~o��pwyzT! o�o~u1�1�Ys�o~w\z�m>{}zrnpx�z~m1w�§>��o~z�w���{}v$�1�pw

s�x��>{}��w\¯« �w5 j{�xCz~w:q�z�s«�Y{�o�o�z�s«z~m1w#�,u1x>t�z�nps�x�¿�D}Ã}Ä�z~m1w\��{��~n�{��1�pw# jm1wy��w� (w\ j{�xCz~w:qz�m�w {}x1o� �wy�¤o�z�s���w:q&�f­Cnpx>taw  �wrx1s\�ps�x1��wy��x1wywMq�¿�D}Ã}Ä\z�s\�~wyz�u1�~x�{���{��pu1w�¡C �w�ty{}x@ve{���wjnpz��wFz�u1�~x*U1¾�>\A��9³�wyzT! o±§>��o~zjz��~�V� �@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIHU1¾#>�A ¿FD�Ã}ÄKJ&>:Ä���ÃL >MÄ�� = L >MÄ��1�AD?� E���Ä��JU¢ÃC MN� D?��E���Ä��JU1ÃCÂ�`nJyÃaP =RMTSEUVÀ!�A>MÄ�� C J\f&�AD?� E���Ä���U1ÃCÂH>MÄ�¿�D�Ã}Ä >MÄ h Aij}ÄXfkL � D?��E���Ä��JU1ÃC MIV

W

¿>Ã#>:ÄKJ MN>MÄ��7>XLZY V>MÄ�� Ã}ÄF�\[AD?� V>a`cb VYQ`cd V

¿�D�Ã�ÄKJ&>XL�YRL@Ã}Ä��\[ D?� MeVÀ��A>:Ä�� C J\f�g�F�D�¿�D}Ã}Ä�¾ Cah A Ã}ÄiA h A >@� h ABj�ÄXfkL >XLlYL�Ã}Ä��\[ D?� MeV

W

ljm1npof �s�xX! z9 (s�������¨r�pz�m1s�u1��m9�AD?� E���Ä U1ÃL n�o9o~wyz(z~sKz�m1w¤��np��mCz9��{��pu1w�npx ¿�D�Ã}Ä&¡�Ã�Ä��\[AD?�npo�xX! zM�1�jwyv�wyv\�>wF�:¡��AD?� E���Ä U1ÃL¹{}x>qPÃ}ÄF�\[AD?� {}��w«o~wy�>{}��{�z~w«��{��~n�{��1�pwyoM�Pljm1w@��{��pu1w@s��Ã}Ä���[AD?�\npo�tas��1npw:q@npxCz�s�AD?��E!��Ä U¢ÃC  jm1wyx@¿�D�Ã}Äenporty{��p�pw:q���ljm1w ¿FD�Ã}Ä$�Bu1x>taz~n�s�x«qCsCwyo�xX! z�Cx1s� º jm1wy��w#Ã�Ä��\[AD?�\n�ojo~z�s���w:q�¡Yo~s\n�zrtF{�xX! z�t~m>{}x1��wKnpz:�T¨ �>s�npxLz~wy�rz~s$Ã}ÄF�\[AD?�\m>{�ojz~s\�>w��np��wyx$z~s#¿FD�Ã}ÄKJ M �@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIHSE] � ¾�� D��*F�D C ¾ ��¿ ¾ C ��F�D¹À������ �1¾ �CÃ}ÄF�\[AD?��AADC½�ÂLÃ��1Ã��A>}¾}Ä = D�ÂL¾�[�Á " �

��Ã�B ���*F>Ã��7> C B¢¾ EcAAD?�AD C D?�ADMÄ�½@D�À��@�����1¾ �LÃ}Ä��\[AD ��B1¾?E ÅAD?� Ã}Ä>MÄ��(Á >�Á D9Á\À������ �1¾ �CÃ}ÄF�\[AD?�1>���Ã7À>¾�>MÄ��AD?�1�1¾�Ã}Ä >MÄ!��Á

]ES

É f

Page 16: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� 5� � � �

U1¾#>�A ¿FD�Ã}ÄKJ&>:Ä���ÃL >:Ä�� = L >MÄ�� ] À��������1¾ �CÃ�Ä��\[AD?� MN] À��������¢¾ �CÃ}Ä���[AD?��`nJ�à P =RMTSEURV

W

¿>Ã#>:ÄKJ MN>MÄ��7>XLZY V>MÄ�� Ã}ÄF�\[AD?� V>a`cb VYQ`cd V

¿�D�Ã�ÄKJ&>XL�YRL �1Ã}Ä���[AD?� MeV SE] � ¾ �AD���F>Ã��PÄ>¾�[a[AD + �AD�À>Ã�����>MÄ1Å Ã7À>¾#>:Ä��AD?�] �1¾ +�Ã�Ä��\[AD?� +]ES

À��A>:Ä�� C J\f�g�F�D�¿�D}Ã}Ä�¾ Cah A Ã}ÄiA h A >@� h ABj�ÄXfkL >XLlYL�Ã}Ä��\[ D?� MeVWljm1wy�~w*! o�{@o~�>wMtan�{�����{��pu1w#�,s���xCu1�p�f�Ys�npxCz�wF��o�´ � �����1µK{�xYq¹{@o��Yw:tan�{���z<�C�>w#�Bs�� ��wyx1wy�~n©t

�Ys�npxCz�wy�~o\´ U1¾#>\A ] µF� � x 587:9 ; ¡'tF{�o�z~npx1��{��>s�npxLz~wy�K�,�~s�v s�x1w#z<�C�>w\z~s�{�x1s�z�m1wF�5qCn�qCxX! zt~m>{�x���w\npz�o ��{}�pu1w�� � x ���� #"%$ m1s� �wy��wF�:¡f{��pnp��x�v$wyxCzjnpo z�{}��wyx¹npxCz�s«{�tytas�u�xLzM� � �r{«ÂC¾}Ä1Åty{}xes�x1�p�$�Ywy��npx«{�zj{�x@wy��wyx«v�wyv$s����#��s1ty{}z�nps�x�¡�z~m1wyx�{#�Ys�npxCz�wy�js}�fz<�L�Yw#½TF�Ã�� ] �Ys�npxCz�npx1�z�s${}x$s1q1q��ps1ty{�z~n�s�x$ jnp�p��m>{M��w¤npz�oj��{��pu1wKt~m>{�x1��w:q@n�� tF{�o�zjnpxCz�s${#ÂC¾}ĢŠ] �

��� =k� 6<-�� 8k�

� x5�7{jo�z~��npx1�¤n�oEwau1o~z {}x5{��~��{M�Ks���t�mY{���{�taz�wF��o:�Tljm1wfwyxYq s}�>z�m1w�o�z~��npx1�¤n�ofqCwFx1s�z~w:q �C� { �Fwy��s�C�Cz�w��9ljm1w¤��{��~n�s�u1ofo~z���npx1��ve{�x�n���u1��{�z�nps�xK�,u1x>t�z�nps�x1o�{���wKqCwyoata��np�Yw:q�n�x\z~m1wKs�x1�pnpx1w�ve{}xLuY{���>{}��wrty{}���pw:q p �?�@�A>MÄ1Åk!�¡�{}x>q\qCw:ta��{}��w:q#npx\z�m�w � ���A>MÄ1Å(ÁGF npx>ta�pu>qCw�§Y��w��9ljm1w��,s��p�ps� jnpx1�j�1npw:taws��ftas1qCw np�p�pu1o�z~��{�z~wyojz�m�wynp�ju1o�w5{}x>q�m1np��m1�pnp��mCz~ofo�s�v$wr����s�����wFv$oSE] �?��� >MÄ1ÅA�9Á�½ ]ES@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?���A>:Ä1Å�ÁGFIH½TF>à � � ���3Q #2Q�o�% V�SE] g�FF>����AD���D?� UAD��H�MÀ�Ã�½�D C ¾�� Q\o ½TF>Ã��1Ã1½?�AD?�A� ]ES½TF>à � � ��� U #2Q�o�% V½TF>à � � ���� #(%i`Qf�>MÄ�> �A>�ÃCÂ�� D\m��kf VlSE] �?�@�� >�� ��D � �¢¾ �*F�D��A>�Å�F��7��>��AD C ¾��1B1¾ E

] Ã}ÄiA à E��¢¾}¿>Ã��A>L½�ÃCÂCÂ�B��AD?��¿�>MÄ>Ã�� D\A^[ >?��F�ÃQo]�= B@�AD9Á��1¾ E ½�Ã}Ä�¾}Ä�Â�B7>MÄ�>?�A>}ÃCÂ#>���D] �?�@�A>MÄ1ÅA����FF>���[1Ã�Ba[�F�DMÄcAAD C >MÄ�>MÄ¢Å�Á] S

½TF>à � ] ½ �}À���� V SE] AADL½�ÂCÃ��AD@�Jà À>¾�>MÄ��AD?� L = E��aA1¾#D@�MÄ�+ �7>MÄ�> �A>�ÃCÂ#>@��D�> ��Á ]ESECÄ��@>�Å�Ä�D\A >MÄ�� Â#DMÄ V¿>Ã#>:ÄKJ MNSE] ½�¾�À�B f�F�D�ÂCÂL¾ef�>MÄ��¢¾ � ���3Q�Á " C �?���3QH>��MÄ + � = >�Å7DMÄ�¾ E1Å�F L F>à �EA  E�½T_ ]ES�?�@�Y½MÀ�BJ �?���3QkL�f�F�D�Â�ÂC¾ef MIVSE] > C B1¾ E�ÂC¾C¾\_�D\A�Ã���¿�DM¿>¾ ��B�ÂC¾�½}Ã��A>�¾}Ä �?���3Q.B1¾ E + A7��D�D���F�D��@D = B��AD

U1ÃL E�D��s +GF�+*L$+ D +*L!+ Â�+*L!+�ÂL+*L!+�¾�+�L!+�j o�+] S

É ®

Page 17: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*�45� � � �

SE] ½�¾�Ä�½�Ã��AD:Ä>Ã��ADafH��> �kfJ¾}Ä��1¾ �?����Q�Á " C �?���3QH>��%�1¾C¾ �M¿>ÃCÂLÂL F>Ã�� AºÂ?E�½T_ ]ES�?�@�Y½�Ã��J �?���3QkL�f ��> �kf MeVSE] U1ÃL E�D��·Ã��7�?����QOs +�F�+*L!+ D +*L!+�Â�+�L!+�Â�+*L$+�¾�+*L�+ +�L!+ � +*L$+ > +*L!+ �B+*L!+�j o +] S

Â#D:Ä `7�?���1Â�DMÄKJ&�?�@�3Q MeV S ] C >MÄiA �*F�D¹Ä�EC¿ = D �º¾ C ½�F>Ã��1Ã�½ �AD?�A� ] SÀ�� >MÄ�� C J�f��ADMÄ1Å@��F�¾ C C h �*H >�� h A ½�F>Ã��1Ã�½ �AD?�A�*j�ÄXfkL �?���3QkLeÂ#DMÄ MeV> C J&�?���Y½:¿CÀKJ&�?�@�3QkL �?��� MEMÀ�� >MÄ�� C J�f\C h �*HJÃ}ÄBA C h �*H�Ã�� D^A > C�C D?� DMÄ��Bj}Ä fkL � ���3QkL �?��� MeV

D�Â���DÀ�� >MÄ�� C J�f\C h �*HJÃ}ÄBA C h �*H�Ã�� D��*F�D1��Ã}¿�D*j�ÄXfkL �?�@�3QkL �?���� MeV

> C J&� ���A�?���RJ&�?���3Q Lvf = ¾�Bkf M `E` JM½TF�Ã�� ]kM � ����� MÀ�� >MÄ�� C J�fTg�F�DH� ���A>MÄ1Å C = ¾�BBH >��:Ä�+ �7>MÄ C h �*H j}ÄXfkL � ���3Q MeV

D�Â���DÀ�� >MÄ�� C J�fTg�F�DH� ���A>MÄ1Å C = ¾�BBH >��1>MÄ C h �*H j}ÄXfkL � ���3Q MeV

SE]HC >:ÄBA1��F�D C >?�A� � ) ¾�+ >MÄ �?�@�3Q ]ES½ ��À����c` �?���Y½TF!�J&�?����QkL!+�¾�+ MeV> C JM½��}À����c`E` JM½TF�Ã�� ]kM � ����� MÀ��A>:Ä�� C J\f�g�F�D?�AD�>��JÄ>¾�¾ >MÄ C h ��HEj}ÄXfkL �?���3Q MIV

D�Â���D NÀ��A>:Ä�� C J\f�C h �*H >@� C �1¾}¿ ��F�D C >?� �?� ¾ >MÄ C h ��H �¢¾ �*F�D1DMÄBA�Á�j�ÄXfkL

½��}À����KL �?���3Q MIVSE] � ¾�[ ½�¾}À�B1��FF>��¹À>Ã���� ¾ C �?����Q >:Ä��1¾ �?��� Ua]ES�?���>½MÀ�BJ&� ��� U L�½��}À���� MIV

WW»jo~u>{��p�p�qp � ���3QE!1 �s�u1��q��>w#u1o~w:q�npx1o�z~w:{�q�s}��p � �?���3Q #to�%k!Cz�s@�~wa�,wy� z~s@z�m1w${�q1qC��wFo�o s}�(z�m1w§>�~o�zKwy�pwyv$wFxLz¤s��(z~m1w\t�mY{���{�taz�wF� {}���a{M�L¡Yo�npx>t�w�� qCw�§>x1wyo z~m1w#��{��pu1w s}�|{�x�{}���a{M�exY{�v$wKz~s�Yw$z�m�w\��s1ty{}z�nps�x�s��jz�m�w\§>�~o�z#wy�pwyv$wyxCzM� � x�� {�t�z:¡�s�x>taw���s�uX! ��w#o�wyz�½ À!���«z~s.�?���V¡�z�m�w$Ì��{��~n�{��1�pwyo��>wFm>{M��w o~npv$np��{����p�Knpx � 1�F/9tanp��tau1v�o�za{�x>tawFo:�� ljm1wy��w\npoKx1s�z��~w:{��p�p�«{�xC��qCn�£�wy��wFx>taw$npx«z~m1w\�Ywym>{M�Cnps�u1�Ks���z�m1wZ- A2A-���F�� �GF�.'A CB/( ��Ns��Ywy��{}z�s�� #(%${}o(npzj{��1�1�pnpwyo�z�s${}����{M�Coj{�x>q��Ys�npxCz�wy�~o:�9ljm1wKwa�1�1�~wyo�o~nps�x1o � ���&# >�%�{}x>q½��}À����&# >�%\{��~w �>s�z�m«����s1tawyo~o�w:q�npxLz~wy��xY{��p�p�$u1o~n�x��\�>s�n�xCz~wy��oM�|¦�s��jnpx1o~z�{}x>taw�¡�� ���&# >�%n�ojw �u�n���{}�pwyxCz(z~s ] JEJ&� ��� M P?J > MEM �� ¨r���a{M��{}x>q#�Ys�npxCz�wy�(q¢w:ta��{��a{�z�nps�x1o|{}��wjnpxCz�wy�at~m>{�x1��w:{�����wK{�o9�Bu1x>taz~n�s�x#�,s��~ve{}�L�Y{���{}v\�wyz�wy�~o:��­Cnpx>tawr{��~��{M�Co(qCwMty{M�5npv�v\w:qCn�{�z~wy�p�rnpxCz�sK�>s�npxLz~wy��oM¡L{}x�{}���a{M�5npo9x1wy��wy�|{�taz�uY{��p�p��>{�o~o�w:q@z~s�{��Bu1x>taz~n�s�x'��ljm1wy��w��,s��~w�¡�{�xC�\�>{��a{�v�wyz�wy�jqCw:t��©{}��{}z�nps�x1oj jm�n©t~mqpÇ�psLs��5�pnp��w�!{����a{M�Co:¡Cw�� �>�

>MÄ!� C JM½TF>Ã�� à #(% MNÁLÁCÁW

{���w#z��~w:{�z~w:q��L��z�m1w\tas�v��1np�pwy�r{�o¤n ��z�m1wy�� (wy�~w\�>s�npxLz~wy��oM¡�o�svpp½�F>Ã�� à #(%k!>tas�u1��q@�>w��wy�1��{�taw:q��L� pp½�F>Ã�� ] Ãe!p� ljm�n�o@tas�xC��wy��o~n�s�x�m1s��©q¢o 1�� � �@ jnpz�m1npx7�,u1xYtaz�nps�x7�,s���v@{���>{��a{�v$wFz�wy�(q¢w:ta��{��a{�z�nps�x1o:¡�x1s� jm1wy�~wrwy�po~w�� � �'z�m1npo(t�s�xC��wy�~o�nps�x��>s�z�m1wF��o���s�u�¡L{M��s�n�q npzM�

É q

Page 18: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*�45� � � �

ËfwMty{�u1o~w z�m�w q¢n�o~z�npx>taz~nps�x\�Ywyz< (wFwyx@�>s�n�xCz~wy��or{}x>q${}����{M�Co�s��,z~wyxeq¢sLwFo�xX! z�o�wywyv z�s#ve{}z<�z�wF�:¡��1��s�����{}v$v�wy��o���wyzKo~u1���1�~npo�w:q  jm1wyx�n�zKqCsCwyo:�#¨¤����{M�Co {��~w5x�s�zK�>s�npxLz~wy��oM� ljm1w\{��~��{M�qCw:t��©{}��{}z�nps�x^pp½�F>Ã��7�?���3Q #2Q\o�% V !���w��u1wFo�z�o#z�mY{�z o~�>{�taw#�Bs��Kz�wyxPt~m>{��a{�taz~wy��o#�>w\o~wyz5{}o�n�qCw��ljm1wK�Ys�npxCz�wy�rqCwMta��{���{}z�nps�xqpp½TF>à � ] ½ �}À!��� V !�s�x@z�m1wKs�z~m1wy�¤m>{�x>q&¡C��w��u1wyo~z�o {��1��{�tawK jm1n�t~mm1s��©q¢o5{«�Ys�npxCz�wF�:�«ljm�w$�Ys�npxCz�wy�#npo z�s«�Yw$�Cx1s� jx7�C��z~m1w$x>{}v$w�½ ��À�����¡�{}x>qJtF{�x¹�Ys�npxCzz�s@{�xC�«½TF>Ã��«´Bs��rtas�xLz~np��u1s�u1o�{}����{M��s��j½TF>à �Coaµr{�xC�C jm1wy�~w�� �?���3Q5ty{}xX! zj�>w5t~m>{}x1��wMq���n�zT! o jm1wy�~w z�m�w5{��~��{M�\�Ywy��npx1or{}x>q� jm1wy��w�n�zj jnp�p��{��p |{M�Co�o�za{M�L�

S(s�u\ty{}xX! z��Y{�o�oT jm1s��pwj{����a{M�Cofz�s¤�,u1xYtaz�nps�x�o:¡�s�x1�p� �>s�npxLz~wy��oTz�sKz�m1wFv���l9s qCw:ta��{}��wjo�uYt�m�Ys�npxCz�wy�~o(tas��~��w:t�z��p�\��s�u5x1wFw:q#z�sK�Ywr{M |{}��wjs���z�m�wrqCn�£Vwy�~wyxCzf j{M�Lo9z~m>{�zfv\u���z~n�� qCnpv#wyx1o~n�s�x>{��{��~��{M�Co�tF{�x«�Yw5o~z�s���w:q�npxev�wyv$s����C�(­Cu��1�>s�o�w#��s�u t���w:{}z�w:q¹{�Ì ¼ {}���a{M�es}�(t�mY{���{�taz�wF��o5{}o�,s����ps� joM� �½TF>à � C ��E�>?�A�)#��%&#2Q�o�% ` N f�Ã}ÀLÀ>Â#DBfkLZf = Ã}Ä>Ã�Ä>ÃefkLqfE¾��1Ã}Ä1Å DBf W Vljm1npo5ta�~w:{�z~wyo$o~�>{�t�w\�,s��ke@o�z~��npx1��o5w:{�t~m É r �L�Cz~wyo5�ps�x1�>�«³&wyz�! o oa{M�¹z�m>{}z(p C ��E�>?�A�i!Y��wyz�oo�z~s��~w:q«{�zjv�wyv$s���� �ps1ty{}z�nps�x � oEoEoY�'ljm�wyx«z�m�n�o� jnp�p���>wKz�m�w ��{M��s�u�z(npx$v�wyv$s������

�EoEoEo�à À À  DajEo Á Á Á Á�Eo7Q\o = Ã Ä Ã Ä ÃajEo�Á Á Á�Eo U o�¾ � Ã Ä Å D>jEo�Á Á Á

� ����s�u$ j{�xCz~w:q\z~s5 j�~n�z~w�{ �,u1x>t�z�nps�x�z�m>{}z(�1�~npxLz~w:q\z~m1wyo~w o�z~��npx1��o�s�u�z(o~s\��s�u$t�s�u1��q$q¢sp Â#>@�?� Ä�Ã}¿�D��kJ C ��E�>?� � M !p¡�z�m�wr�Bs��p�ps� jn�x����~s�u1z~npx1wK jn��p�� �s��~�U1¾#>�AºÂ�>��?���}Ä�Ã}¿�D��kJ:½TF>Ã��¹Ä>Ã}¿�D@�$#(%&#2Q�o�% M N>:Ä��7> VC ¾�� J&>*`Eo V >*C� V >*PEP M NÀ�� >MÄ�� C J�f h �*j}Ä fkL�Ä�Ã}¿�D��$# >�% MeV

WWljm1wK��s�u1z�npx1w � - Fjz�s#�>w�z�s���q z�m1w o~n �ywKs��fz�m1wKz~m1npx1��ojz~m>{�z�Ä>Ã}¿�D@�K�Ys�npxCz�ojz�sY¡Cs�z~m1wy�� jnpo~w npz �s�xX! zj�Yw5{��1�pwKz�s$tF{���tau1��{�z~wKÄ>Ã}¿FD��$# >�%$tas��~��w:taz~�p�L�j­Cs�z�m1w(p Q\oe!Cx1wyw:q¢o�z~s\�>w��1��s��Cn�qCw:q�npxz�m�w�qCw:t��©{}��{}z�nps�x'� � z(qCsCwyo~xX! z|tF{���wK{��Ys�u1z�m1s� 7ve{�xC� z~m1npx1��o�{���w¤npx\z�m1wr{}����{M�C¡�o�s z~m1wj§>�~o�z�>{}n���s��f�1�a{�t~��wFz�orv�np��mCzBwau1o�zK{�o� (wF�����>wKwyv��1z<�C�'¨¤xew �u�n���{}�pwyxCz|qCwMta��{���{}z�nps�x�npoU1¾#>�AºÂ�>��?���}Ä�Ã}¿�D��kJ:½TF>Ã�� J ] Ä>Ã�¿�D�� M # Q\o�% Mo�{M�Cnpx1�#z�m>{}z"p Ä�Ã}¿�D��B!�npor{��>s�n�xCz~wy�jz�s${}x {}���a{M�\w:{�t~m«s}�� jm1s�o�wKwy�pwyv$wFxLz~ojnpo É r#t�mY{���oM�ljm1w${��Ys���w�v$wyz~m1s1q@s��rta��wM{�z�npx1�«{}����{M�CoK j{�o�z~wyo5{��ps�z¤s��(o~�>{�taw\n��jz�m1w#o�z~��npx1��o q¢n £�wy�

���~w:{�z~�p�$npx$�pwyx1��z�m'�9¨¤x«{��pz�wy�~x>{�z~np��wK |{M�\z~s\npx1npz�n�{��pnpo�wjnpor{�o��Bs��p�ps� jo:� �½TF>à � ] UAD�Å&#(%c` N fEÃ����A>C½�F>¾�_�DBf Lvf = D�D?���1¾L¾��kfkLqf�½�Ã����1¾ �kf W V+jwF��wlp UAD�Åk!>npo o~wyz#u1�J{�o5{}x {}���a{M��s}�(À>¾#>MÄ!�AD?�B=��¢¾E=�½TF>à �CoM� ljm1w��©{M��s�u1z¤npx¹v$wyv�s�����npoqCn�£�wy��wyxCz¤z�sCs>�9¨ �Ys�o~o�np�1�pwK�©{M��s�u1zTn�oM� �� AEA@�AD������1ÃCÂ?E�D

�EoEoEoadEoEo o�EoEo��cd��Eo o�EoEo��adEbEo oÁCÁCÁdEoEoEo à � � > ½ F ¾ _ D>jEod��EoEo = D D � � ¾ ¾ � jEodEbEoEo ½ à � � ¾ � j o

É n

Page 19: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� ���+� � � 8�� �

ªjs�z�w«z~m>{�zvp U D�Åk!9npo$z~m1w�o~z�{}��z$s}�5{�x {}����{M�7s��5�Ys�npxCz�wF��o:� ljm1w�{�t�z�u>{}� t~m>{}��{�taz�wy�~o�{��~wo�z~s��~w:qºwy�po�wy jm�wy��w�� � �\ �w¹ |{}xLz~w:qº{¹�Bu1x>taz~n�s�x z~m>{�z� (s�u1��q��1�~npxLz@s�u1z@z�m1wyo~wJo~z���npx1��o:¡z�m�wyx�z~m1w p Â#>��?� Ä�Ã}¿�D��kJ M !���s�u�z�npx1w5{}�>s���w5 �s�u1��qCx?! zrq¢s>¡�o~n�xYtaw5z~m1npoKz�npv$wKz�m�w�{}����u�v$wyxCzp Ä>Ã�¿�D��B!C (s�u1��qCxX! zj�Yw �>s�npxLz~npx1�\z�s�z�m1npx1��orz�mY{�z�{}��w É r#�C�Lz~wyoK�ps�x1�Y¡1�1u1z¤¯«´Bz�m1w o~n �yw5s}�({À>¾#>:Ä��AD?�B= �1¾E=�½TF�Ã��1µy��ljm1w�q¢w:ta��{��a{�z�nps�x5x1wFw:qCo�z�s oa{M� z�m>{}z�p Ä>Ã�¿�D��B!M�>s�n�xCz~o�z~s5{ t~m>{}��{�t�z�wy��Ys�npxCz�wy�M�U1¾#>�AºÂ�>��?���}Ä�Ã}¿�D��kJ:½TF>Ã�� ]E] Ä>Ã�¿�D�� M N>:Ä��7> VC ¾�� J&>*`Eo V >*C� V >*PEP M NÀ�� >MÄ�� C J�f h �*j}Ä fkL�Ä�Ã}¿�D��$# >�% MeV

WWljm1w¤�,s����ps� jnpx1�5q¢w:ta��{��a{�z�nps�x$ �s�u1��q${}�po�s\ �s������ �U1¾#>�AºÂ�>��?���}Ä�Ã}¿�D��kJ:½TF>Ã�� ] Ä>Ã}¿FD��$#(% M N»jo~npx1�@½\A DC½� ´,o�wFw5�>{}��w�e�®�µf jnp�p��m1wy�p�@ta��{���n��,�\z~m1w5{}�>s���w q¢w:ta��{��a{�z�nps�x1o:�ljm1wr����s�����{}v �>wF��s� Po~m1s� jo(z~m1w�Ì�z<�C�>wFo(s}� {��~��{M�#npx${�taz~n�s�x'�9ljm1w±�,u1x>taz~nps�x1o�z�s ����npxCz

z�m�w�xY{�v$wFojs�u1zj{��~w �pn���wrz~m1w {��Ys���wKwa�>tawy�1z¤z�m>{}z� ljm1w«{����a{M�Co${���w@wyxYqCo�z~s��1�Yw:qPo~s¹z�m>{}z\z�m1w��,u1xYtaz�nps�x�o\x1wyw:qCx?! z\�Cx1s� ��>wa�Bs���wFm>{�x>qm1s� �ve{}xC�5wy�pwyv�wyxCz�or{}��wKnpxez~m1w {��~��{M�Co:�� ljm1w C ¾��\�psCs���u1o�wyoKo~s�v$wKtas�v�v$s�x�tas�xCz���{�taz�nps�x1o:�

@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIHU1¾#>�AºÂ�>��?���}Ä�Ã}¿�D��kJ:½TF>Ã�� J ] Ä>Ã�¿�D�� M # Q\o�% M NC ¾�� J V Ä>Ã}¿�D��)#�o�%&#�o�% V Ä�Ã}¿�D��*P P M NÀ�� >MÄ�� C J�f h �*j}Ä fkL ] Ä>Ã}¿�D�� MeV

WW

U1¾#>�AºÂ�>��?���}Ä�Ã}¿�D�� U JM½TF>Ã�� ] Ä>Ã}¿�D��)#(% M NC ¾�� J Vl] Ä>Ã}¿�D@��� ` � � ��� V Ä>Ã}¿�D���PEP M NÀ�� >MÄ�� C J�f h �*j}Ä fkL ] Ä>Ã�¿AD�� MeV

WW

>MÄ��P¿>Ã�>MÄKJ&>MÄ!��Ã��CÅY½ L ½�F>Ã�� ] Ã��CÅ U&#(% M N½TF>à � C ��E�>?�A�)#(��%&#2Q�o�% ` N f�Ã}ÀLÀ>Â#DBfkLZf = Ã}Ä>Ã�Ä>ÃefkLqfE¾��1Ã}Ä1Å DBfkLlfEf W V½TF>à � ] UAD�Å&#(%c` N fEÃ����A>C½�F>¾�_�DBf Lvf = D�D?���1¾L¾��kfkLqf�½�Ã����1¾ �kfkL3JM½TF>Ã�� ]kM � ����� W VÂ�>��?���}Ä�Ã}¿�D��kJ C ��E�> �A� MeVÂ�>��?���}Ä�Ã}¿�D�� U JGUAD�Å MeVD�mA>?�J o MeV

W

�&� � � � 6 �-N���V� 9

l9s�{�x�o� �wy�5z~m1wyo~w«wa�1wy��t�n�o~wyo\��s�uX! �p�fx1wyw:q7z~s��Ywe{}�1�pw\z�s���wyz#��wy�C�YsL{}��q¹npx1��u1zK�,�~s�v�z�m1wu1o~wy�:�f¦�s��fz~m1wjv$s�v$wyxCzM¡:u�o�wjz�m�wj�,s����ps� jnpx1���,�a{���v$wyxCz'z~s ��wFz({Ko�z~��npx1�K�B��s�v z�m1wju�o�wy�M���?���x1wywMqCorz~s\�>s�n�xCz�z�s\z~m1w o�za{��~zjs�� {}x@wa�1n�o~z�npx1�$t~m>{}��{�t�z�wy�K{����a{M�L�

É:Ê

Page 20: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� ���+� � � 8�� �

½TF>à � ] ÅAD?�����?���A>MÄ¢ÅJM½TF>à �H�?���&#(% MNÀ��A>:Ä�� C J\f " ÄCÀ�E��·Ã � ���A>MÄ1Åij}ÄXf MeV�AD?� E���Ä ÅAD?�A� J&�?��� MIV

W­1{}v$�1�pwr{�x�o� �wy��oK{���w�s�x$�Y{���w ®gq u1x���wFo�ors�z�m1wF�� jnpo�w o~z�{}z�w:q��É � �¹��npz�wK��s�u1�js� jx �?�@�Y½MÀ�B\��s�u1z�npx1w��j»±o�w5{ C ¾��$�psCs��@ jnpz�m«{��~��{M�Co�§>�~o�z:¡Yz~m1wyx«o~wyw5n����s�u@ty{�x@u1o~w5{&[�F�>}Â#DK�psLs��«{�x>q �>s�n�xCz~wy��oM�

Ì���ljm1w��,s��p�ps� jnpx1��t�s¢q¢wj�,�a{���v�wyxCz9u1o�wyo�ve{}xC� s���z�m1wKtas�xCz~��{�t�z�nps�x1o�v$wFxLz~nps�x1w:q�w:{}���pnpwy�:�� zrtas�v�wyof�B��s�v�Å*F>¾#�?�A�L½?�A>MÀ��V� �jwa�< j��npz�wKnpzjz�s#ve{}��w¤n�z�v$s���w¤��wF��np�1�pw��>:Ä�� ½C½�Ã#��D>` J&�T_FD\[cHE`ao � ½}¾}À�B���� >�Å�F�� s

J J = À���� PE` ½TF@ECÄE_�� = B��AD�� M L ½�¾�À�B��CÂ#D C � MEMP C ELÄ�½?�A>�¾�Ä V

e�� �¹��npz�wr{K����s�����{}v¬z~m>{�zTn�xC�Cnpz�wyoTz�m1w¤u1o�wy�jz~s z<�C�>w¤npx${Ko�z~��npx1�\{�x>q#�1�~npxLz~o(z~m1wro~z��~n�x��s�u1zj�>{�t~�L j{��aqCoK´,ljm�w {}x1o� �wy�T! o¤npx$o�wMtaz�nps�x É q�µF�

¯Y� �¹��npz�w¤��s�u��js� jx$��wF��o�nps�xes}��� ���Y½TF��$´Bo�wyw z~m1w v@{�xCu>{����>{���wr�Bs��r{#qCwyo�t���np�1z�nps�x>µy�f�� �¹��npz�wr{K����s�����{}v¬ jm�n©t~m���w:{�qCo(npx@{Ko�z~��npx1�#��np��w���ÌLr����Ks���� É f�¦��5{�x>q#s�u1z���u1z�o�z�m1wz�wyv��>wy�a{�z~u1��w#z�s�z�m1w#x1w:{}��wyo~z5qCwy����wyw\u1o~npx1�$z~m1w5s�z�m1wF� o�ty{}�pw��Kljm1w#w:{�o~n�wFo�zK |{M�@z~s�>{��~o�wKz�m1w�n�x��1u1zjo�z~��npx1�\npo�z�s\u1o~w���L½�Ã}Ä C z~s\o�ty{}x@z�m1w npx1��u1zjo�z~��npx1�#�,s��|{#xCu1v\�Ywy�{�x>q�{\t�mY{���{�taz�wF�:� � zj jnp�p����wFz�u1�~x«z�m1wKxCu1v\�Ywy�js��9npz�wyv�o(o~u>tytawyo~o<�,u����p�@��wM{�q�npx'�ÁLÁCÁ>:Ä��aAAD�Å��AD@D�� V½�F>Ã��7�C½�ÃCÂ�D V>:Ä��1�AD?��E���Ä��JU1ÃCÂ?E�D VÁLÁCÁ� D?��E���Ä��JU1ÃC EFD3`7���C½�Ã}Ä C J&�?��� LTf h A h ½BfkL �EAAD�Å���D�D�� L �A�C½�ÃCÂ�D MeV

ÁLÁCÁ®���ljm1wK�,s����ps� jnpx1�#�1��s����a{�v� jnp�p�'�Yw5qCwy��wy�ps��Yw:q«��{}z�wy�Knpx@z�m1w#m>{�xYqCs�u1zM��­¢u1�1�Ys�o�w#��s�um>{M��w${@o~npz�u>{}z�nps�x¹ jm1wF��w$��s�u¹x1wFw:q¹z~s«�1��s1tawFo�o${@o~z���wM{�v s}�rz�m1npx1��o\´,z~m1wy�¹v$np��mLz�>w#o�ty{}x1x1w:q¹t~m>{}��{�taz�wy��n�v@{���wyo:¡Yt�m�wyo�o �Ys�o~npz�nps�x1o¤s�� {�oKnpx«z~m1npo�w���{}v$�1�pw�¡�o�z~��npx1��oaµy¡o�s�v�wrs}�  jm�n©t~m@v$np��mLzT�>w5q¢u1�1�pn�ty{�z~wyo:��ljm1w ����s1tawyo~o�npx1�$v�np��mCzf�Yw5�j¶f»��<npxCz�wyx1o~np��w�¡o�s#��s�u?! q#�a{�z~m1wy��u1o�wKz�m�w�����wy�Cnps�u1o~�p��ty{}��tau1��{�z~w:q\��{}��u�wyo(z~m>{�x���wa�<�1�~s¢t�wyo�oKqCu1�1�pn�ty{�z~wwyxCz���npwyoM� ��mY{�z�! o�x1wyw:q¢w:q«npoj{ � 1T1������ Cl/�-�� � )F�� {�t~m«wyxCz~���«npx@z�m1w#�psCs���� u��eza{��1�pw x�wyw:qCo z~s$m>{M��w {\��wMtas��aq�s��fz�m1w#s��~np��npx>{���o~z��~n�x��{�x>q z�m1w �~wyo�u���z¤s��9z�m1wK�1�~s¢t�wyo�o~n�x��>��¨ o�z~��u>taz~u1��w#s��9z<�C�>w I�Ä��@��B�@B�À�D\AAD C �?����EV½?� N½�F>Ã��7�?���&# ����% V>:Ä�� U1ÃC E�D V

W I�Ä!����B V jn��p�9qCs\�,s��jx1s�  �K¦1s��rs�u��r�1u1�~�>s�o�wyo�n�zKqCsCwyo�x?! zKv@{�z�z~wy�jv\u>t~m@ jm>{�z¤z�m1w#�1�~s¢t�wyo�o �n�x��$��s�u1z�npx1w#npo:� ³&wyz�! oKu1o�w\z~m1w��,s��p�ps� jnpx1�>¡Cv\u1�pz~n������Cnpx1�5{}�p��z~m1w\t�mY{���{�taz�wF��o�!���{��pu1wFoz�s���wyz�m�wy�:�

ÌLr

Page 21: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� ���+� � � 8�� �

>:Ä��PÀ��1¾�½�D@���kJM½TF�Ã�� ] �?��� M N>MÄ!� U1ÃCÂa` Q V[�FF>�Â#D J ] �?�@� M N

U1ÃCÂa` U¢ÃC ] J ] �?��� MIV�?���BP P V

W�AD ��E���Ä U1ÃC V

W

l�s���wyzKo~z���npx1��oKn�xCz~s$z�m�w\�1��s�����{}v���s�u�ty{�x�u1o~w\z�m1w#ÅAD � �?���A>:Ä1Å��,u1xYtaz�nps�x�� ªjs�  j��npz�w\{��1��s�����{}v�z~m>{�zK��wM{�qCo o~z��~n�x���oK�,�~s�v�z~m1w\��wy�C�YsL{}��q�� � �jz�m1w\o~z���npx1�@npoKx1wy  ¡z�m1wyx�n�zT! oj�1��s1tawyo~o�w:q&¡'s�z�m1wy�~ jnpo�w#n�z~oj��{��pu1wKnpor�psCs���w:q�u1�«npx«{#z�{�����w��(ljm�w5�1�~s�����{�vo�m1s�u1��q o~z�s��# jm1wyx�p DMÄBAk!ynpo9z<�L�Yw:q��<+±wy��w�! o�{ro~��wy�pwyz~s�x\�1�~s�����{�v z~sK��wyzf��s�u o~z�{}��z�wMq��

S ] F�Ã#�TF/Q�Á�½ ] SS ] g ����� >MÄ�½�Â?EBAADH�?�¢Ã}ÄBA1Ã�� A >:Ä�½� EBA D C >�Â#D@� ] SS ] g*F�D C ¾CÂCÂC¾*[A>MÄ1Å U Â#>MÄ�D@� EF��D���F�D¹À��ADMÀ!�1¾�½�D��@��¾����1¾ ½?� D�Ã��ADJÃLÂ#>�Ã#��D@�9Á� ¾��AD���F>Ã��1��FFD���D·Â#>MÄ�D@� ����� + g D:ÄBAQ[A> ��F�à ) V +

]ES@ AAD C >MÄFD3g ��� � I�� #"�� I �Eo@ AAD C >MÄFD ��� P�� g � ��� I � ���

�@B�À�D\AAD C �?����EV½?� N½�F>Ã��7�?���&# ��� P�� g � ����I � % V>:Ä�� U1ÃC E�D V

W I�Ä!����B V½�F>Ã��7�?���&# ��� P�� g � ����I � % VS ] g �����1$ �AD�à �AD·Ã}Ä�Ã����1Ã�B ¾ C g ��� ��I�� �"�� I D�Â�DM¿�DMÄ�� �J¾ C ��B�À�D I�Ä!����B ]ES>:Ä��PÀ��1¾�½�D@���kJM½TF�Ã�� ] �?��� M N>MÄ!� U1ÃCÂa` Q V[�FF>�Â#D J ] �?�@� M N

U1ÃCÂa` U¢ÃC ] J ] �?��� MIV�?���BP P V

W�AD ��E���Ä U1ÃC V

W

½�F>Ã�� ] ÅAD?���#� ���A>MÄ1ÅRJM½TF>Ã��1�?���'#(% MNÀ!�A>MÄ�� C J\f " ÄCÀ@E��PÃ7�?���A>:Ä1ÅBj}ÄXf MeV� D?��E���Ä ÅAD �A�kJ&�?�@� MeV

W

¿�Ã#>MÄKJ M N>MÄ���Ä@EC¿��C¾ C �#DMÄ���� >�D��Z`Qo V

S ] g ����� ����DJÅAD?���#�?���A>:Ä1ÅH�ADMÀFD�Ã��AD\A¢Â�B�Á �1¾ � D}Ã�½TF �?���A>:Ä1Å s�=" C �*F�D1�?���A>MĢŠ�}Ã�BA� ) DMÄBA +*L ��F�D:Ä D�mA>?��Á" C �*F�D1�?���7>���ÃLÂ��AD�Ã�A@B >MÄ ��F�D%�1à = Â#D LÀ!�A>MÄ��1��F�D·Ã#�@��¾�½�>�à �AD\A U1ÃL E�D

D}Â#��D

Ì É

Page 22: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� ���+� � � 8�� �

½}ÃCÂ�½&E>ÂLÃ��AD.��FFD U¢ÃC E�DXL«Ã�A AºÃ7Ä�D�[D:Ä�����B1�1¾H��F�D��1à = Â#DXL ��F�D:Ä�À!�A>MÄ��H�*F�D U1ÃL E�D9Á

]ESW

q���ljm1wfv$wFz�m1s1qju�o�w:q {}�>s���wfty{�x �Ywfnpv$����s���wMq�u1�>s�x'�9¦'np�~o�z��p�C¡ynpz� jnp�p�:��sj j��s�x��jn �1z~m1wy��w{���w�z�sCs$v@{�xC�\o�z~��npx1��oM��ËT��t~m1sCs�o~npx1�${�x�{}���1npz~��{��~np������{�����w ��{��pu1w¤�,s���g ��� � I #"�� I��s�u¹tas�u1��q«s���wy��tas�v$w#z�m1npo ����s�����wFv�¡Y�1u1z z~m1w\v$wFz�m1s1q�s��jo�w:{}��t~m1npx1�«z~m1w\z�{}�1�pw5z~so�wyw  jm�wyz�m1wF��{�x@wyxCz~���$npojx1wF  �Yw:tas�v$wyoj��wy���@npx1wGHetanpwyxCzr{}ojz�m1wKz�{}�1�pwK����s� joM�¨Jz�wMt�m�x1n�u�w|ty{}�p��wMq � -�F � ��Nftas��Ywyof jnpz~m�z~m1w�o��Ywyw:q#�1�~s��1�pwyv��V¦�np��o~z' �w(x�wyw:q#{ � - F �+����I.�/( �1+�K jm1n�t�m#��np��wyx�{¤o~z���npx1�K�1�~s1qCu>tawyoj{¤xCu1v\�>wF��npx#z�m1wj�a{�x1��w oTÁCÁ g ��� ��I #"�� I��ljm1wK�,s����ps� jnpx1���,u1x>t�z�nps�x6wau1o~z {�q1qCo¤u1�«z~m1w5��{}�pu1wKs��fz�m1w\t~m>{��a{�taz~wy��o�n�x@z~m1w5o~z��~n�x��{�x>q ��wyz~orz�m�w ��wyv@{�npx>qCwF�|{E�,z�wy�rq¢n��Cn�qCnpx1� �C� g ��� ��I �"�� I��>:Ä�� F>Ã#�TF C ÄKJM½TF>à � ] � ��� M N>MÄ!� �1¾��¢ÃC `Qo V>MÄ!� > V[�FF>�Â#D J&>a` ] � ���BPEP M

�1¾��¢ÃC PE`7> V�AD ��E���Ä �1¾��¢ÃC h g ��� ��I�� #"�� I V

W

ªjs�  ¡� jm1wyx1wy��wy�\{@o�z~��npx1�«npo z~se�Yw$����s1tawyo~o�w:q�¡�npz�o�m>{�o~m¹��{��pu1w#n�o#ty{���tau1��{}z�w:q¹{}x>qz�m>{}z(npo�u1o�w:q@{}o|{}x$npx>qCwa�$npxCz�s�z�m1w¤z�{�����w�¡C jm1n�t�m�npo(v\u>t~m �u1n�t~��wy��z�mY{�x$o~w:{��at~m1npx1�>�� � z~m>{�z¤wyxCz��~�enpojwyv��1z<�$z~m1wyx«z~m1w o~z���npx1��nporx1wy  {}x>q�m>{�o¤z�s\�Yw5����s1tawyo~o�w:q�� � �fz�m1wwyxCz����@npojs1tytau1��n�wMq�¡Yz�m1wyx@z~m1w5{�o~o�s1tan�{�z~w:q@��{}��u�w tF{�x@�>w#{�tytawFo�o�wMq��rljm�n�ojv�wyz�m�s¢q npo#V{M (wMq�¡C�1u1zj �w*! �p�'qCw:{��� jnpz�m$z~m>{�zj����s�����wFv¥��{�z~wy�:�

S ] F�Ã#�TF U Á�½ ] SS ] g ����� >MÄ�½�Â?EBAADH�?�¢Ã}ÄBA1Ã�� A >:Ä�½� EBA D C >�Â#D@� ] S@ AAD C >MÄFD3g ��� � I�� #"�� I �Eo@ AAD C >MÄFD ��� P�� g � ��� I � ���@ AAD C >MÄFD-I � u g �Q=EQ�@B�À�D\AAD C �?����EV½?� N½�F>Ã��7�?���&# ��� P�� g � ����I � % V>:Ä�� U1ÃC E�D V

W I�Ä!����B V½�F>Ã��7�?���&# ��� P�� g � ����I � % VS ] g �����1$ �AD�à �AD·Ã}Ä�Ã����1Ã�B ¾ C g ��� ��I�� �"�� I D�Â�DM¿�DMÄ�� �J¾ C ��B�À�D I�Ä!����B ]ES>:Ä��PÀ��1¾�½�D@���kJM½TF�Ã�� ] �?��� M N S ] Ã}¿�D·Ã#�3F>Ã#�TF Q�Áa½ ]ES>MÄ!� U1ÃCÂa` Q V[�FF>�Â#D J ] �?�@� M N

U1ÃCÂa` U¢ÃC ] J ] �?��� MIV�?���BP P V

W�AD ��E���Ä U1ÃC V

W

½�F>Ã�� ] ÅAD?���#� ���A>MÄ1ÅRJM½TF>Ã��1�?���'#(% M S ] Ã}¿FDPÃ��DF�Ã#�TF/Q�Á�½ ]ESNÀ!�A>MÄ�� C J\f " ÄCÀ@E��PÃ7�?���A>:Ä1ÅBj}ÄXf MeV

Ì�Ì

Page 23: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �*�*� ���+� � � 8�� �

� D?��E���Ä ÅAD �A�kJ&�?�@� MeVW

>:Ä�� F>Ã#�TF C ÄKJM½TF>à � ] � ��� M N>MÄ!� �1¾��¢ÃC `Qo V>MÄ!� > V[�FF>�Â#D J&>a` ] � ���BPEP M

�1¾��¢ÃC PE`7> V�AD ��E���Ä �1¾��¢ÃC h g ��� ��I�� #"�� I V

W

U¢¾#>\A7��D?��� �1à = Â#D��JU1ÃC EFD��eJ U1¾#>\A M NS ] g ����� ��D?� ÃCÂCÂH��FFD U1ÃCÂ?E�DHDMÄ��@�A>�D��1>MÄ ��F�D��1à = Â#D��1¾ I � u g �

J��AD +�ÂLÂ�Ã����&EC¿�D ��F>Ã��1��F�DJÀ��1¾�½@D����kJ M �1¾ E��A>:Ä�D3A1¾#D@�MÄ�+ �À��1¾�A E�½�D�=7Q M

] SW

>:Ä�� C >MÄBA���DMÄ�����BRJM½TF>Ã�� ] �?�@�KL >MÄ�� = E�½T_FD?� M NS ] g �����

> C ��F�D1DMÄ!����B >MÄ À>¾#�?� >�¾}Ä + = E�½T_�D?� + >�� I � u g �H�*F�DMÄ C >�ÂCÂ�*F�D1DMÄ�����B + � C >�D�Â�A �H>MÄ Ã�ÄBA1�AD?��E���Ä1��F�D �?���A>MÄ¢ÅB+ �À!�1¾�½�D��@��D\A U1ÃL E�DXL D�Â#�@D�� D?��E���Ä ��F�D U1ÃC EFDP¾ C �*F�D DMÄ!����B�Á

] SW

¿�Ã#>MÄKJ M N>:Ä�� = E�½T_�D � V>:Ä�� U1ÃC V

��D?�����¢Ã = Â#D � U1ÃC E�D@�kJ MeVS ] g ����� ����DJÅAD?���Cà �#�?�@�A>MÄ1ÅH� DMÀ�D�Ã�� D\A1Â�B�Á �1¾��7D�Ã1½TF �?���A>MĢŠs�=

E��@D��*F�D3F>Ã#�TF C ECÄV½?�A>�¾}Ä �1¾ C >:ÄBA1��F�D1�?���A>:Ä1ÅB+ �HD:Ä�����B>MÄ ��FFD��¢Ã = Â#DXL ��FFDMÄcA1¾H��F�D C ¾CÂCÂL¾�[A>MÄ1Å

] S= E�½T_�D �Q`^F>Ã��TF C ÄKJ �?��� MU1ÃCÂQ` C >:ÄBA��#DMÄ!����BJ&� ���KL = EV½�_�D � MeVÀ��A>MÄ�� C J\f �1ÃL E�D ¾ C C h �*H >�� h ABj}ÄXf L �?���KL@U1ÃC MeV

Wn���ljm1w@�1��s��1�pwyv  jnpz�m7z�m1npo\v$wFz�m1s1q¹npo#z�m>{}z\z�m1w � - F � +����I.0/( �1���ve{M���1�~s¢q¢u>taw@z�m1wo�{�v�w ��{��pu1w��,s�� q¢n £�wy�~wyxCz o�z~��npx1��o ´��,s���w���{}v$�1�pw�¡?p Ã�½?� !�{}x>q3pp½�Ã��k!1 jnp�p���Ys�z~m¹ve{}�n�xCz~s�z~m1w@o�{�v�w\wyxCz��~�¢µF�P¨¥o~npv$�1�pw\ j{M�¹s�� t�s��1npx1�� jnpz�mJo~u>t~mQp .�1 �� OF �1+��F !'npo#z�m1w�,s��p�ps� jnpx1�>� � � � {�z�{�����w¤wyxCz��~�$npo(s1tyt�u1�1npw:q�¡Yt�m�w:t~�$z�m�w�o~z��~n�x��\z�m1wy�~wKz�s#o�wyw n��'npz�! o�z�m1ws�x1wj�Ywynpx1� o~w:{��at�m�w:q �,s��M� � �'npzfnpo:¡�z�m�wyx$�~wyz�u1�~x$z~m1w�{}o�o�s1tan�{}z�w:q ��{��pu1w�� � �'npzfnpo�xX! z9z�m1w��np��mCz�o�z��~npx1�>¡�z�m1wyx@�psCs��${}zjo�u1�1o~w��u1wyxCzKwyxCz��~n�wForu1xCz�np��wynpz~m1wy�� {�x@wyxCz~���\�Bs��jz�m�w�o~z��~n�x��\n�o��Bs�u1x>q&�� {�x@wyv��1z<�\wyxCz��~�$npo��,s�u1x>q���¹� z�! oj�Ywywyx«o~m1s� jx@z�m>{}zr{��p��wyxCz��~npwyor{��~wK�,u1�p�Yu1�'�

S(s�uX! �p�Ym>{M��wKz�s\{�q�q w�u1o�zK{K�,wF  �pnpx1wyojz~s\z�m1w C >MÄBA DMÄ����@B\�~s�u1z~npx1w s��9z�m1w��1��wy�Cnps�u�owa�1wy��tanpo~w����jwyv�wyv\�>wF�fz�s$ta�1ta�pwK��s�u1x>q� jm1wyx�z�m1wK�Ys�z�z~s�v s��9z�m1wKz�{}�1�pwKn�oj�~w:{�t~m1wMq��

ÌLe

Page 24: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ��������������(� ��������� � �+���� � � � ��� (�+� � ����� � � �V� � ��V

¨�v$s���w���s���u1o�z�v$wyz~m1s1q\´<{�x>q#z~m1w�{}x1o� �wy�fz~s z�m�wrwa�1wy�atanpo�wKm1wy�~w:µfnpofnpx\z~m1wjx1wa�1z�o�wyzs���w��¢wF��tanpo�wFo5´Bo�wyw�o�w:taz~nps�x É q�µy�

� 9 � ��� � 6 � � �� : � 6<;���� 6�� ;Z��� 0 �� �< ; 6<;���-��O� �

������� � ���� ������S(s�uety{}xX! zju1o�w z~m1w¤�,s��p�ps� jnpx1� �~wyo�wy�~��w:q  (s���qCo±�,s�����{��~n©{}�1�pwrx>{}v$wyoM¡Cwyz�t}�

Ã?E��1¾ = �AD�Ã\_ ½�Ã#��D ½TF>Ã�� ½�¾}ÄF�?�½}¾}Ä��A>MÄ@E�D AAD C Ã?E>Â�� A1¾ A1¾ E = Â�D D�Â#�@DD:Ä�EC¿ D\m��AD ��Ä C ÂC¾CÃ�� C ¾�� Å1¾��¢¾> C >MÄ�� ÂC¾}Ä1Å �AD�ÅA>�� �AD?� �AD?� E���Ä��F>¾���� ��>�Å�ÄFD\A ��>��AD�¾ C �?�1Ã��A>L½ �?��� E�½?���[A>?�Y½TF ��B�À�D�AAD C ECÄ�>�¾}Ä ECÄ���>�Å�Ä�D\A U1¾#>�AU¢¾CÂCÃ��A>}Â#D [�F�>�Â�D

¨º�,wy ºs��9z�m1wyo~w5mY{M��wyxX! z���wyzj�Ywywyx�qCwyo�t���np�>wMq��02"���� � �rljm1npo npo z~m1weqCw�� {�u1�pz��B/�1�A�- N*)l;�� - FGF¤�,s�� ��{}��n�{�����wFo�o~s«npz�! o x1s�zKwa�1�1�pn©t�n�z~�p��u1o~w:q��

� �1Ã��A>C½¢¡� jm1n�t~m@��s�u?! ��w�{}���~w:{�q¢�\v$wyzM¡Cn�or{}xe{}��z~wy��xY{�z�np��w t��©{}o�oM�$ �'��;�� � � � ��{@��{}��n�{�����w#npo�xX! z v�w:{�xCzKz�s¹t~m>{�x���w\��s�uJty{�xPqCwa§>x�wenpz5{}o\½�¾}ÄF�?��� K MON�M�¡ � ���s�uPta��wM{�z�w«{}xJnpxCz�wy��wy�\u1o�npx1�^pp½�¾�Ä��?� >MÄ!� > ` � V !Tz�m1wFx {���{�z~wy��p >>`Qb V !f jnp�p�

�>w\np�p�pwy�L{}� �:+±s� (wF��wy�M¡'n��j��s�u¹ta�~w:{�z~we{��>s�npxLz~wy�Kz�s >«{�x>q�u1o�w\z~m1npoKz�s�t~m>{}x1��w#z�m1w��{��pu1w�¡���s�uX! �p�1�1�~s��>{}�1�p�5��wyzj{M |{M�  jnpz~m\n�zM�'ljm�wrve{}npx �1u1�~�>s�o�wKs��f½�¾}Ä�� ��n�o�z�s�m1wy�p�s��1z~n�v�npo�wy�~o:� U¢¾CÂCÃ��A>}Â#DKnpojz�m1wKs����>s�o�npz�wKs��j½�¾}Ä�� ���

9F��"�, � �(��m>{�ojwFxLu�v$wy�a{�z�wMq$z<�C�Ywyo:¡��pn���w¤À�Ã#�C½�ÃCÂ>� K MON�MD:Ä�EC¿ ½�¾CÂC¾ � N � D\AKL! �AD�DMÄ L � Â?E�D W Vljm1wy�k! ��w«x1s�z${�o\u1o~wa�,u1� {}o\n�x7À>Ã#�C½}ÃCÂ��Yw:ty{}u1o�w¹�¥q¢sLwFo�xX! zet~m1wMt���n �K��s�u·o~wyze{}xwyxCu1v$wy�a{�z~w:q�z<�L�YwKz�s${���{��pn�q\��{}��u�w��

� 9F7:%M;N�69F� � � S�s�u·tF{�xJo~u1����wyo�z#z�s�z�m�wetas�v$�1np�pwy� z~m>{�z\{@��{��~n�{��1�pw\o�m�s�u1��q��Ywe��wy�1z#npxJ{��wy��n�o~z�wy� �,s��¤� {}o�z�wF�5{�tyt�wyo�oM�*K M N�M,p � D�ÅA>��?� D?� >MÄ��7>B!>v�np��mCzjm1wy�p�¹n�� >$npo {�v\u>t~mC�u1o�w:q�npx>qCw��¢npx1����{���n�{}�1�pw��'¨¤x@s��1z~n�v�npo�npx1��t�s�v$��n��pwy�To�m1s�u1��q\u1o~w��~wy��npo~z�wy�~orwGHetanpwyxCz<�{�xC�C |{M�C�'ªjs�z�w z~m>{�z���s�u«ty{�xX! zju1o~wKz�m1w(p �k!Cs��Ywy�a{�z�s��js�x«{ � D�ÅA>��?� D?�#��{��~n©{}�1�pw��

�����"� # � �$��%�� �� �¨jzj��{�o~z:¡Cm1wy�~w npor{#z�{}�1�pwrs��fs��>wy�a{�z~s���or{}x>q��1��wMtaw:qCwyxYtaw��ljm1w#��npx1wFors��fz~m1w5za{��1�pw {��~w5npx@s��aqCwy�Ks��f�1�~w:taw:q¢wyx>tawC¡'o~slp à ] = P �I!�npornpxCz�wy�~�1��wyz~w:q

{�o"p Jyà ]�=RM P �e!p� ��m1wyx@npxeqCs�u1�1zj�1u�zj�1��{�t���wyz�o¤npx'&ljm1w E ;�;���$R%&08�6%)(5%&�N^ tas���u�v$x#o�m1s� jojm1s� �z�m1wKs��Ywy�a{�z�s���oj����s�u��'�LKBMON�M p � !C����s�u��1o(�pwa�Bz

z�s¤��np��mCzM¡:v�w:{�x�n�x��jz�m>{}z+* �-, ��. n�o�w��u1np��{��pwyxCz�z�s�´/* �0, µ �-. �a{�z�m�wy�fz�mY{�x1* � ´ , �2. µy�ËTs�z�m«{}��w �1�~wyz�z<��u1o�wF��wFo�oKwa�1�1��wFo�o�nps�x1o:�

Ì�¯

Page 25: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ��������������(� ��������� � �+���� � � � ��� (�+� � ����� � � �V� � ��V

������������� �������� �������������������� �"!�#%$�&('�� )�*,+%-�.�/�01.32#%$�&4'��5�"!6������ 798:���&<;=�%$�!(:?>�@�A�8B�$��%C%:D!4��>

E�E .�/�/1.F/G)%H�I�J4K�L�*M.FNG)%H�I�J4K�L�*�.POQ)%H�I�J4K�L�*�.�R�S�TDU�V4W#%$�&4'��5�"!6������ XY;=Z"��)"[�L4\�U?*������ �"!�#%$�&('�� N1.F]1._^Q)%`�V4a4H�b=H�R?*������ �"!�#%$�&('�� / E������ �"!�#%$�&('�� c�c1.�0�0������ �"!�#%$�&('�� c1.Fc4d�.�01.e04d������ �"!�#%$�&('�� d�d�.37d������ �"!�#%$�&('�� OF8Bf$��%Cg;=:Dh�>�@jik8B�$��%Cl!4#�>������ �"!�#%$�&('�� mn8Bf$��%Clo�!4#�>������ �"!�#%$�&('�� O�OF8p��!4&=$�XY;Y�9;=:Dh�>������ �"!�#%$�&('�� i�i98p��!4&=$�XY;Y��!4#�>#%$�&4'��5�"!6������ q1r#%$�&4'��5�"!6������ d�. E d�.�/4d�.e]4d�.�^�d�.e0�04d�.�O�d������ �"!�#%$�&('�� .

s � � �'��%���� ����ºty{�x@�Yw u1o�wMq@z�s\s��>wy�a{�z~w s�x@�1npz�oM�9ljm1npojnpoju1o�wa�Bu1���,s��j�ps� �� �pwy��wy���1��s����a{�v$v�n x1�Kz~m1s�u1��mz�m�w�s��>wF��{�z~nps�x1oK{���w {}��o~s5u�o�w:q@ jm�wyx@ j��npz�npx1�(% ���a{��1m1n�taor{}�1�1�pn�ty{�z~nps�x1oM�359F�6��%&��7 0W@�%1�ut�v ­Cu1�1�Ys�o~w\��s�u� j{�xCz�w:q�z�s�o�wyz��1npz ® s�� >@´ {@ÂC¾�Ä1Å�¡Yo�{M�1µ¤z�s-QC�5¦�np��o~z

��s�u#x1wywMq#z�s5ta�~w:{�z~w�{ �(- F �(z~m>{�z9m>{}o({�Qjnpx\z�m1wr®}z�m#�1npz {}x>q(oKwy�po~wy jm1wy�~w��C�5q¢s�npx1�p Q��BCEC��I!C jm�n©t~m�o�m1n��,z~o {��p�'z~m1w5��n�z~oKs��(z~m1w�ÂC¾}Ä1Å-Q5�pwa�Bz ® �1npz�oM�Kljm1wyx���s�u�x1wywMq«z~sqCs�{#��n�z �  jnpo~w � � u1o~npx1��p >>`7>xw�J�Q��BC C�� M !p�

( ��;�9F���6%1��7Y0W@�%&�yt�v ­Cu1���>s�o�wr��s�u\ j{�xCz�wMq#z�s o~wyz(��n�z�®Ks���>5´<{ ÂC¾}Ä¢Å�¡�oa{M�1µ9z�s8oY�f¦�np��o~z��s�u#x1wywMq#z�s5ta�~w:{�z~w�{ �(- F �(z~m>{�z9m>{}o({"oKnpx\z�m1wr®}z�m#�1npz {}x>q Qjwy�po~wy jm1wy�~w��C�5q¢s�npx1�p Q��BCEC��I!Cz~m1wyx«npxC��wF��z�npx1��z�m1w��1npz�oru�o�npx1�$z~m1w{z#s��Ywy�a{�z�s��:�¤ljm1wyx«��s�u«x�wyw:q�z�seq¢s${�1npz<�< jn�o~w �@� � u1o~npx1�\z�m1w �$s��Ywy�a{�z�s��:��ljm1w  jm�s��pwKs��Ywy��{}z�nps�x@npo"p >>`#> �|zeJ�Q\CEC � M ! jm1n�t�m«ty{}x@�>w tas�xLz~��{�taz�w:q z�s�p > �B`}zeJ�Q\CEC � M !p�

*�� 9B08�6%1��7\0 ,.0';�~ um�:��02� % $R02/1/nt�v � xl%�����{}�1m1n�taoM¡Cve{�o~�Co({��~w�s}�,z�wFx t���w:{}z�w:q�w:{�t�ms��� jm�s�o�w��1npz�oj��wF�1��wyo~wyxCz5{#s���z�nps�x�z�m>{}zrnpojz�s\�Yw o�wF��wMtaz�w:q�npx@o�s�v�wr j{M�L� � {�t~m@�1npzty{�x\�Ywr�~wa�,wy�~��w:q�z�s�u1o�npx1�5{}x${��pn�{�o9z�mY{�zfm>{}of�Ywywyx@o�wyz�u1�\npx${�x\npx>t���uYqCw�§>�pw���K MON�M1{ve{�o~�  jm1n�t~metas�u1��q\�YwKu1o�w:q�npx${#ty{��p�Yz�s#ve{���w|{� jnpx>qCs� Po�wFx1o�npz�np��w�z~s5��wy�\�1�~wyo�o~wyo{�x>q �1u1z�z~s�x1����wyo~o�wyo5t�s�u1��q��>wKo~wyzru1�@�C�eq¢s�npx1�ELÄ���>�Å�ÄFD\A >MÄ��P¿>Ã��T_ `���D?B u �AD���� � Ã#�T_�w � E!���1¾}Ä u �AD���� � Ã#�T_ V

�����%� � � � � %���%���� ���¦�np��o�zM¡f{@x1s�z�w\s�x¹z~wy��v�npx1s��ps����L�#¨ ��{}��n�{�����w#npo '*)�� �I)�'  jm1wyx¹npz npo5ta�~w:{�z~w:q�¡�{�x>q�o~�>{�tawnpo5v@{�qCw��,s��5npz:��¨¥��{}��n�{�����w\npol'*)�. � -�A�)�'# jm1wyxPnpz5{��p�~w:{�qC��wa�1npo�z~o\�1u1z#x1wyw:qCo\z~s��Yw$�~wa�qCwyoata��np�Yw:q¹z~s«z�m�w$tas�v��1np��wF� ´,�Ywy�~m>{��1o��>w:tF{�u1o~wenpzK j{�o�'*)�� �I)�' n�x¹{�x�s�z�m�wy� o�s�u1��t�w#§>�pw:µy�ljm1npx1�«s}� '*)�. � -�A ��N npx � �pnp��wl'*)�. � -�A ��N�{}z tau1o�z~s�v�o {�q¢v$npz�z~n�x��\z�s«z~m1w\wa�1npo�z�wFx>taw@s��o�s�v$wyz~m1npx1�>��PqCw:ta��{��a{�z~n�s�x1oj{���wjx�s�zfw:{}o��\z~s ��w:{�q��9¨rxC�#��sCs1q#�>sCs��5s�x$�Jo~m1s�u��©q#w��¢���©{}npx5m1s� Pz~s

��wM{�q�tas�v��1�pn©tF{�z�wMq«� qCw:ta��{}��{�z~nps�x1o ��npx1o~n�qCw s�u�z �@z�s�u1x>qCwy�~o�za{�x>q�z~m1wyv�¡Yo~z�{��~z�npx1�«{�z¤z�m1w��{��~n�{��1�pwjx>{}v$w�{}x>q\ �s��~�Cn�x��5s�u1z< |{}��qCo��>{�t���z�s#z�m1wK�>{}o�wKz<�C�>w�� S(s�u$o�m�s�u1��qCxX! z�x1wyw:q�z~su1o~w$tas�v��1�pn©tF{�z�wMqeq¢w:ta��{��a{�z�nps�x1oKo�s«qCs�x?! z¤ (s����~�ez~sCsev\uYt�m@n��(��s�u¹ty{�xX! z p q¢w:tas1qCw*!�z~m1wyv��°¤wywy��{\t���np�1o�m�wywyzrs}�fu1o�wa�Bu1� ��B�À�D�AAD C o({�xYq$���©{M�\ jnpz~m�½\AADC½�Â\´Bo�wyw#o�w:t�z�nps�x É ®�� É µy����! #"%$ npxLz~��s1qCu>t�w:q@z�m�w�u�o�w s}��z�m�w(p U¢¾#>\Ak!���wy�C (s���q n�x@��{}��nps�u1ojtas�xLz~wa�1z�oM�� p �1¾ E��A>:Ä�DkJGU1¾�>\A M ! $z�m1wK��s�u1z�npx1wKza{���wFojx1s${��~��u1v�wyxCz�o:�

ÌLf

Page 26: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���E� �\�L� � �^� � � ���� � � ���

� p U1¾#>\AH�¢¾ E��A>MÄFD J >MÄ��7> M ! �z~m1w �~s�u1z~n�x�w��~wyz�u���x1o¤x1s\��{��pu1w��� p U1¾#>\A ] À����k! �À!����npo5{@��wFx1wy��n�t��Ys�npxCz�wy�  jm�n©t~m7o�m1s�u1��q��>w@ty{�o~z5npxCz�s�{ o��Yw:tan�§Vt�,s��~v �>w��,s��~w u1o�w��ljm1wK�,s��p��s� jnpx1�Kwa�>{}v$�1�pwyo�o�m1s�  tas�v$v$s�x�q¢w:ta��{��a{�z�nps�x1o:�S�ID[ N=\ � !�$�:��"��# �"! ;=:e$�:��S�ID[���+����4- ;�:u;=#"#�;��F!=���P$�:��"ZS�ID[ )�N ��*�+����4- ; � !=$�:��"��#5�"!�;=:{;�#"#�;���!�����6$�:��"ZS�ID[ N ��+����4- ;�#"#�;���!����� � !�$�:��"��#"Zj�"!P$�:��"ZS�ID[ )�N4W�*?)�S�ID[�* � !�$�:��"��# �"! ;6���D:�X��%$�!(: ��;��4$�:�&F;�:�hu#"�����D#":�$�:�&F;=:e$�:��� V�S�a )�N4W�*?) � V�S�a�* � !�$�:��"��# �"! ;6���D:�X��%$�!(: ��;��4$�:�&�:D!�;=#"&(Zj;�:�hF#"������#":�$�:D&e:D!4�"'�$�:�&S�ID[ )�N4W�+%-�*?)�S�ID[�* �5:u;=#"#�;���!=� � !=$�:��"��#"Zj�"!�;j����:DX��%$�!(:�Z5��;��4$�:D&e;�:�hu#"� ����#":�$�:�& ;=:�$�:��

ªjs�z�w z~m1wKn�v��>s���za{�x>tawKs}��z�m�w �1��{�t~��wyz~ornpx$z~m1wyo�w\qCw:t��©{}��{}z�nps�x1oM� � �({\qCw:ta��{��a{�z~n�s�x$��wyz�oz�sCs�t�s�v$����w�� npz o~m1s�u1��q �>w��1��s���wyxPqCs� jx'��¦�s��#wa�>{�v��1�pw�¡�z�m1w��©{}o�z w���{}v$�1�pw$tas�u1��q��>w��wF j��npz�z~wyx�{�o��B�ÀFD\AAD C >:Ä�� J ]*u � " M J >MÄ�� MlSE] AADC½�ÂLÃ��AD u � " Ã#�¹À>¾#>:Ä��AD?�1�1¾ C ECÄV½?�A>�¾}Ä ��F>Ã��

�1Ã�_�D@�PÃ�ÄBA1�AD?��E���Ä��·Ã}Ä >MÄ���Á ] Su � " C #�% V

� � � �32 � 6+ " <2<�� �;���-N���

­C�>{�tawrnpoj{�u1z~s�v@{�z�n�ty{}�p���¤o�wyzr{}o�n�qCw±�,s��f��{}��n�{�����wFof jm1wyx�z�m1wy�${}��wKqCwa§>x1wMq�¡1�1u�z(o~s�v$wFz�npv$wyo��s�u·qCs�xX! z �Cx1s�  �Ywa�,s���wym>{}x>q7m1s�  v@{�xC�«��{��~n�{��1�pwyo ��s�uX! �p��x1wyw:q7s���wau1o~z5m�s�  �ps�x1��{}x{��~��{M�@v$np��mLzjx�wyw:q�z�s��>w�� ljm1w�¿>ÃLÂCÂC¾�½$tas�v�ve{�xYq$ta�~w:{�z~wyo o��Y{�taw�¡���wFz�u1�~x1npx1�«{$�Ys�npxCz�wF�z�s�z�m1npo�x1wy  {}��w:{��9l�s�n��p�pu1o~z���{}z�wjnpz�oTu1o�w {�xYq\q1{�x1��wy��oM¡Cm1wy�~w*! or{Ko�w��u1wFx>taw s}��{�z�z~wyv$��z�o({}z j��npz~n�x���{#o~z���npx1�\�~wy��wF��o�wF������s�����{}v��@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIHU1¾#>�A À!�A>MÄ���� �AD�UAD?� ��DkJM½TF�à � ] �?��� MN>MÄ��7> VECÄ��@>�Å�Ä�D\A >MÄ�� Â#DMÄ VÂ#DMÄ `7�?���1Â#D:ÄKJ&�?��� M = Q VlSE] ��F!B �*F�D>=7Q � � DC½�Ã?E���DJÃ��@�1Ã�BA�1�?�1à ��� Ã��coL

��¾ > C Ã7�?���A>MĢŠF�Ã#�¹Ä ½�F>Ã��A�XL ��FFDÂCÃ��?� ½TF>Ã��a[A>�ÂL = DPà � À�¾#��>?�A>}¾}ÄPÄI=7Q

]ESC ¾�� J&>�`CÂ#DMÄ V >*H `Eo V >*= = MÀ�E!�Y½TF>Ã��RJ&�?���&# >�% MeV

W

U1¾#>�A ¿�Ã#>MÄKJ MN½TF>à � >:ÄCÀ�E������?���&#2Q�oEo�% SE] [�F�B Q\oEo �>]ESÀ!�A>MÄ�� C J\f " ÄCÀ@E��Pà �?�@�A>MÄ1ÅBj�ÄXf MeVÅ D?�A�kJ&>:ÄCÀ�E������?��� MBV SE] �TF>¾ E>Â*A ½�F�DC½T_ �AD?� E���Ä U1ÃL E�D ]ESÀ!�A>MÄ�� C J\f ��� >MÄ1Å3[1Ã#� h �*j}Ä fkL >MÄCÀ@E����#�?�@� MeVÀ!�A>MÄ���� �AD�UAD?� ��DkJ&>yÄCÀ�E����!�?�@� MeV

W

Ì�®

Page 27: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� � �\�L� � �^� � � ���� � � ���

ljm1npoK (s����Co:¡Y�1u1zKnpo�{ �1npz6pÇ�psCs�o�w�!'´Bo�u1���>s�o�w#z�m1w#u1o�wF� z<�C�>wyoKv�s���w�z�m>{}x É rgr$t~m>{��a{�t~�z�wF��o���µ�{�x>q7qCsCwyo�xX! z#��wywF� {�tas��L�¹s}�rz�m1w@�~wy��wy�~o�w:q o�z��~npx1��o~m1s�u��©q npz �>w@x1wFw:qCw:q7��{�z~wy�:�ljm1w x�wa�1zjwa�>{�v$����w¤o�m1s� joK{  j�~s�x1�@´B�1u1z¤x1s�zju1xYtas�v�v$s�xYµf{�z~z�wyv��1z(z~s\o�s�����wKz�m1w ��{}z�z�wF��pnpv$npz�{}z�nps�x'�@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIHSE] � � � � � ]ES½TF>à � ] ¿>Ã�_�D � �AD�UAD?� ��DkJM½TF�à � ] �?��� MN>MÄ��7>XLZY VECÄ��@>�Å�Ä�D\A >MÄ�� Â#DMÄ V½TF>à � ÄFD\[A�?���'#2Q\oEo�% VÂ#DMÄ `7�?���1Â#D:ÄKJ&�?��� M = Q VYE`Eo V

C ¾�� J&>�`CÂ#DMÄ V >*H `Eo V >*= = V\MÄ�D�[A�?���&#tY�%a` � ���&# >�% VYEP P V

SE] Ä>¾�[ �AD?��E!��Ä Ã À�¾#>MÄ��AD �H�1¾H��F�>��¹Ä�D�[ �?��� >MÄ1Å ]ES�AD?� E���Ä�Ä�D\[A� ��� VW

U1¾#>�A ¿�Ã#>MÄKJ MN½TF>à � >:ÄCÀ�E������?���&#2Q�oEo�% V�SE] [�F�B Q\oEo � ] S½TF>à � ] ½ �}À���� VÀ!�A>MÄ�� C J\f " ÄCÀ@E��Pà �?�@�A>MÄ1ÅBj�ÄXf MeVÅ D?�A�kJ&>:ÄCÀ�E������?��� MBV SE] �TF>¾ E>Â*A ½�F�DC½T_ �AD?� E���Ä U1ÃL E�D ]ES½��}À����a`P¿>Ã�_�D����AD�UAD �A��DkJ&>:ÄCÀ�E@���#�?��� MeVÀ!�A>MÄ�� C J\f ��� >MÄ1Å3[1Ã#� h �*j}Ä fkL >MÄCÀ@E����#�?�@� MeVÀ!�A>MÄ�� C J\f � D�U D?�A��D�A � ���A>MÄ1Å7>�� h ��j}ÄXfkL�½ �}À!��� MeV

W

³�np��wKv@{�xC�6#�{M (w:q@���1��s����a{�v$o�z�m�n�o¤ jnp���Y �s�����v\u>t~m$s}� z~m1wKz�npv$w�¡Cwyo��Yw:tan�{��p�p�$n��9n�zT! ox1s�zj�>{��~zjs�� {#��n�����wy���1�~s����a{�v��'ljm1wK�1�~s��1�pwyv�o|{}��wKz�mY{�z � �� ljm1w(v�wyv$s����r{}���ps1ty{}z�w:q �,s��&Ä�D�[A�?���K jm1wyx#n�z� |{}ofqCw:ta��{��~w:q\{�o9{�x p {�u1z~s�ve{}z�n�t\!a��{}��n��{��1�pw9npxr¿>Ã�_�D �AD�UAD �A��Dfnpo�xX! z��Ywy��v@{�x1wFxLz rnpz�s�x1�p�r��{�o~z�o'{�o��ps�x1�r{�oY¿>Ã�_�D �AD�UAD?� ��DkJ Mz�{���wyo\z�s�wa�1w:tau�z�w��1+±s� (wy��wy�:¡�z~m1w«{����a{M�k! o\tas�xLz~wyxCz�o@{���wFxX! z5wy�a{�o~w:q�¡jz~m1wy�k! ��w6wau1o~z�,��wywMq��,s�����{}z�wy� u�o�w�¡9o~s«n��r��s�u¹{�tFtawyo�o\z~m1w${��~��{M���,��s�v�¿>Ã#>MÄ���s�u¹v$np��mCzro~z�np�p�f��wFz{M |{M�# jnpz�m$npzT�,s��j{� jm1np��w���²«{}�Cn�x��KÄ�D�[A�?����{J�?�1à �A>C½K jn��p�Y�1��wFo�wy�~��w z~m1w q1{�za{ �1u�zs�x1�p�\u1xCz�np��npz�! o�s���wy�~ j��npz�z~wyx«�C�${#o�u��1o�w��u1wFxLz ty{}�p� �� ljm1w5x�wy j�p� t���w:{}z�w:q¹{}����{M�@s}�|t~m>{��a{�taz~wy��oM¡�Ä�D\[A� ����¡1npo~xX! zrz�wF��v$npx>{}z�w:q  jn�z~m�{ �Fwy��st�mY{���{�taz�wF�:¡ )tjEo�+y¡jo�s7z��~�Lnpx1�7z�s¹�1�~npxLz�z�m1w¹t~m>{��a{�taz~wy��o�s�u1z@{�oe{ o�z~��npx1�Jv@{M�¹�>wqCnpo�{�o~z��~s�u1oM�&p ³&u>t~�Cn��p�k!1z~m1w#v$wyv�s����\�ps1ty{}z�nps�x«z~m>{�z¤o�m1s�u1��q@m>{M��w5�Ywywyx�o�wyz�z�s��Fwy��sn�oj�pnp��wF���#z�s\�Yw �ywy�~se{�xC�C j{M�L�

³�wFz�! ojz��~�e{��C{�npx'�SE] ¿>ÃCÂLÂC¾�½�>MÄ¢Å�Áa½ ]ES@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH½TF>à � ] ¿>Ã�_�D � �AD�UAD?� ��DkJM½TF�à � ] �?��� MN>MÄ��7> V

ÌLq

Page 28: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �B� � � � � ���'� � �K� � �

ECÄ��@>�Å�Ä�D\A >MÄ�� Â#DMÄ V½TF>à � ] �AD?���#� ���KL ] ½��}À���� VÂ#DMÄ `7�?���1Â#D:ÄKJ&�?��� MeVSE] $ � D�Ã��AD1DMÄ>¾?E1Å�F7�MÀ�Ã�½�D C ¾��1��F�D1�?�@�A>MÄ1Å ��� � ��FFD C >MÄ>ÃCÂajEoTÁ] S�AD ���#�?��� `nJM½TF�Ã�� ]kM ¿�ÃCÂCÂC¾�½ JyÂ#DMÄcPEQ MeVSE]� ¾*[ � D?���#�?�@� À�¾#>MÄ��A� �1¾ºÃ )BÀ�D ��¿>Ã}Ä�D:Ä��B+$Ã�� D�Ã�¾ C ¿�DM¿>¾��@B�Á

] S

SE] u ¾�>MÄ�� ½ �}À��@� �¢¾ [*F�D?�AD���F�D C >:Ä>ÃC +�jEoL+�Å¢¾#D��JÃ}ÄiA�À�E��7>?�7>MÄ ]ES½ ��À����c`H�AD?���#� ���aPºÂ�DMÄ V] ½��}À����a` +�jEo�+ V

SE] Ä>¾*[ ½}¾}À�B ½TF>Ã��¢Ã�½?�AD?� � C �1¾}¿ �?�@� >:Ä��1¾H��F�D¹Ä�D\[¢Â�B ½?�AD�Ã�� D\A �MÀ>Ã1½�D9Ág�FFD � ����À>¾�>MÄ��AD?�>[A>�ÂC = D·Ã�A�U¢Ã}Ä�½�D\A à ½TF>à �ºÃ �ºÃ1�A>M¿�D L��FFD�½:À����PÀ>¾#>MÄ!�AD?�a[A>�ÂC = D�AADL½?�ADM¿�D:Ä��AD\A�ú½TF�Ã�� Ã�� à �A>M¿FD9Á

] S[�FF>�Â#DkJ ] �?��� � ` o M N SE] [�F�>�Â�DH�?��� >��MÄ�+ �JÀ>¾#>MÄ�� >MÄ1ÅH�1¾1��F�D ÂCÃ��?� +�jEo�+ ]ES½ �}À!���B=E= V] ½ ��À����c` ] � ��� V�?���iPEP VlSE] >MÄ�½?� DM¿�DMÄ��%��F�D¹À>¾#>MÄ!�AD?�7��¾H��F>Ã��7>?�PÀ>¾�>MÄ��A���1¾ D�Ã�½�F

½TF�Ã��1Ã�½?� D?� >:Ä7��E���ÄjÁ ]ESW�AD ��E���Ä1� D?���#�?�@� VW

U1¾#>�A ¿�Ã#>MÄKJ MN½TF>à � >:ÄCÀ�E������?���&#2Q�oEo�% V�SE] [�F�B Q\oEo � ] S½TF>à � ] ½ �}À���� VÀ!�A>MÄ�� C J\f " ÄCÀ@E��Pà �?�@�A>MÄ1ÅBj�ÄXf MeVÅ D?�A�kJ&>:ÄCÀ�E������?��� MBV SE] F>¾ E>Â*A ½�F�DC½T_ �AD?� E���Ä U1ÃL E�D ]ES½��}À����a`P¿>Ã�_�D����AD�UAD �A��DkJ&>:ÄCÀ�E@���#�?��� MeVÀ!�A>MÄ�� C J\f ��� >MÄ1Å3[1Ã#� h �*j}Ä fkL >MÄCÀ@E����#�?�@� MeVÀ!�A>MÄ�� C J\f � D�U D?�A��D�A � ���A>MÄ1Å7>�� h ��j}ÄXfkL�½ �}À!��� MeV

Wljm1w\¿>ÃCÂCÂC¾1½B! w:q@o~�>{�t�we jnp�p�9�>w��1��wFo�wy�~��w:q7u1xCz�np�fnpzKnpo wa�1�1�pn�tanpz��p�@�,�~wyw:q ´,npx¹z�m1npo5tF{�o�w

�C�eqCs�npx1��p C �AD�D JM½ À!��� M !ǵy�9ªjs�z~wKz�m>{}zjz�m1wK�Ys�npxCz�wy�¤z�s#z�m1wK¿>ÃCÂCÂC¾1½B! w:q o��>{�tawKn�ojz~m1w s�x1�p� j{M�$��s�u@m>{M��w z~s${�tyt�wyo�o z~m>{�z¤v$wyv�s��~�V���ps�o~w npzr{�x>q�z�m�w5v�wyv$s����# jn��p���Yw npx>{�tFtawyo�o~np�1�pw��� zj jnp�p�>s�x1�p�\�>wK�B��wyw:q  jm1wyx@z�m1w��1��s�����{}v §>x1npo~m1wyo:�¿>ÃLÂCÂC¾�½\n�oKs}�,z�wyx�u1o�w:q�z~s«ta��w:{}z�w\z~��wyw${}x>q«�pnpo�z¤o�z~��u>taz~u1��wFo:¡fo~npx>taw#s�x1w\s}�,z�wyx�qCsCwyo�xX! z�Cx1s� ��Ywa�,s���wym>{}x>q@m1s� �ve{�xC�#npz�wyv�o( jnp�p���>wKx1wFw:qCw:q��j­CwFw o�w:t�z�nps�x@¨5� ¯��,s��r{}x@wa�>{�v$����w��

� ! � � : I������ I�� : I��

������ � ������� #�� ��� �'�� � ���­Cs�v$w@§>�pw«s��>wF��{�z~nps�x1o@ �s�����s�x ��� ) CB1� �i/t)'AGF${�x>q�o�s�v$w@�ps� (wF�e�pwy��wy�Ks�x1wFo«u1o�w�o�v@{��p�npxCz�wy��wy��o5tF{��p�pw:qu��� )�'*) F�.2A CB/�1�AGFK´<{�x«npx>qCw���npxLz~se{�z�{}�1�pw s��jnpxC�,s���ve{}z�nps�x${}�>s�u1zKs��Ywyx1w:q§>�pwyoaµy�

ÌLn

Page 29: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � � � � � � ���'� � �K� � �

ljm1w#�,s����ps� jnpx1�\tas1qCw$qCsCwyo~xX! z5qCs«{�xC�Cz�m1npx1��u1o�w��,u1�f�1u�z�npz qCsCwyo u�o�w\v$s�o�z¤s��(z~m1w#§>�pwm>{}x>qC�pnpx1���~s�u1z~npx1wyo:� ljm1w@ve{�xCu>{}�j�>{���wyo$qCwyoata��np�Yw¹m1s�  w:{�t~m��~s�u1z~n�x�we�~wy�Ys���z~o@wy���~s���oM�� �:D?����Ä�EC¿�npo o~wyz5s�x¹wy���~s��#z�m1wFx¹À�D?�@�1¾���ty{}xJ�Ywety{}�p��wMq«z~s��1�~npxLz�s�u1z z~m1w$wF����s��5o~z��~n�x��tas�����wFo��Ys�x>qCnpx1��z�s@z~m1w\wy���~s��#xCu1v\�>wF�:¡'{}x>q�{ o�z��~npx1�@z�m1w��1��s�����{}v$v�wy�j�1��s��Cn�qCwyo#{�oKz�m1w{��~��u1v�wyxCz(z~s À�D?���1¾ ���@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH@ >MÄV½� EBAADDC#�?BA� S ��B�À�D���ÁGFIH@ >MÄV½� EBAADDC#�?BA� S �?�1Ã���Á�FIH@ >MÄV½� EBAADDC C ½MÄ��¢ÂTÁGFIH S ] ��F�D¹¿>Ã�Ä�À�Ã�ÅAD��·¾ C ��F�D�½�¾�¿C¿>Ã}ÄBA � �}Ã�Ba[�F�>C½TF

>MÄ�½} EBAAD C >�Â#D��¹Ä�D�D�A �¢¾ = D7¿�DMÄ!�A>�¾}Ä�D�A ]ES@ AAD C >MÄ�D3g � �$I Q>MÄ�� = B@�AD�� ��� D�Ã�A V��>�� D ��� C À�� = B�� D�� ���AD}Ã�A V>MÄ�� C A V SE] �A>�Â#D�AAD@�C½?�A>MÀ!�1¾��A� ] S>MÄ�� C A UV� " � I ] C À VlSE] �A>�Â#D¹À>¾�>MÄ��AD?� � ]ES� " � I ] C À UV½TF>à � = E C�C D?�'# � ��� �"�� % V�SE] � ��� �"�� >��1��D?�HECÀ >:Ä � �EAA>�¾TÁ�F ]ES

¿>Ã#>:ÄKJ M N

S ] �F��D �A>�Â#D�AAD��L½?�A>MÀ��¢¾��A� ]ESC AQ` ¾}À�DMÄ<J\f S D?�Y½ S Å��1¾ ECÀ fkL � � � ����� � � MIV> C J C Ac`E`Q=7Q M NÀFD?���1¾��RJ\f � À�D:Ä�>MÄ1Å S D?�Y½ S Å��1¾ ELÀXf MeVD�mA>?�J�Q MeV

W

[*F�>�Â#D Jg � �$I M N= B��AD�� � �AD�Ã�Aa`H�AD}Ã�A J C AKL = E C@C D?�KL � ��� #"�� MeV> C J = B��AD������AD�Ã�AiHEo MÀ!�A>MÄ�� C J\f h A = B��AD����AD�Ã*A C �1¾}¿ S D?�Y½ S Å��1¾ ELÀjÁ�j}ÄXf L = B��AD������AD�Ã�A MeV

D}Â#��D N> C J = B@�AD�� ��� D�Ã�AB`E` o M NÀ��A>MÄ!� C J\f I�ÄBAP¾ C C >�Â�D S D?�Y½ S Å@�1¾ ECÀ1� D�Ã�½TF�D�ABj}ÄXf MIV½�ÂC¾#�@DkJ C A MIV= �AD�Ã\_ V

WD}Â#��D1> C J = B��AD������AD�Ã�A>`E`c=7Q M NÀ�D?���¢¾��J\f � D�Ã�AA>MĢŠS D �Y½ S Å��¢¾ ECÀXf MIVD\mA>?�RJ�Q MeV

WW

W

SE] Ä>¾*[ EF��D C >}Â#D�À>¾#>:Ä��AD?�A� ]ESC À ` C ¾}À�DMÄ J\f S D?�>½ S À>Ã#�@�T[EA fkLTf��kf MeV> C J C À ` ` � ����� M NÀ�� >MÄ�� C J�f C ¾}À�D:Ä C Ã�>�Â#D\A1�1¾�¾}À�D:Ä S D?�Y½ S À�Ã#���\[EAij}ÄXf MeVD\m >?�J�Q MIV

W

Ì Ê

Page 30: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � � � � � � ���'� � �K� � �

[�FF>�Â#DkJ�g � �$I M NC À�� = B��AD@� ���AD�Ã*AB` C �AD�Ã�A J = E C�C D?�KL QkL � ��� #" � L C À MeVÀ!�A>MÄ�� C J\f h A = B��AD����AD�Ã*A C �1¾}¿ S D?�Y½ S À>Ã#����[EA�Á�j}Ä fkL C À�� = B��AD�� � �AD�Ã�A MIV

> C J C À�� = B��AD������AD�Ã�Ai`�`Eo M= �AD�Ã\_ V

W

�AD�[A>MÄBAJ C À MeV�SE] Å¢¾ = Ã�½T_ �1¾H��F�D �?�1Ã���� ¾ C ��FFD C >�Â#D ]ESSE] �A>MÄiA �*F�D AAD@�C½?�A>MÀ!�1¾��·Ã#����¾�½@>�Ã��AD\A>[A>?��F�à � ���AD�Ã}¿ ]ESC A U ` C >�Â#DMÄ>¾ J C À MeV> C J C A U `E`a=7Q MÀ�� >MÄ�� C J�f C >�Â#D:Ä>¾ C Ã#>�Â#D\Aij}ÄXf MeV

SE] �A>MÄiA �*F�D �?�@�AD�Ã}¿ Ã�����¾�½�>}Ã��AD\A [ >?��F�à AAD��C½?� >MÀ��1¾�� ]ESC À U ` C A1¾}À�DMÄ<J C A U L3f&�kf MIV> C J C À U `E` � ����� MÀ�� >MÄ�� C J�f C A1¾}ÀFDMÄ C Ã#>�Â#D\Aij}ÄXf MeV

C ½�ÂC¾#��D J C À UkMIVWl9s¹z�{���w�{�q¢��{�xCz�{}��w@s�� u1x1n��X! o �ml d ��w:qCnp�~w:taz�nps�x npz�! o\s}�,z�wyx�u1o�wa�Bu1�rz~sJ j��npz~w@§>�pz�wy�~o:��1�~s����a{�v�ojz�m>{}zrty{�x«�~w:{�q �,�~s�v � �EAA>MÄe{�x>q  j��npz�w z~s �?�EA1¾?E���� � x�»jx1n��'¡1�1�~s1tawyo�o~wyo m>{M��w

�?�EA >MÄ'¡��?� A1¾ E�� {�x>qJ�?� AAD?����t~m>{}x1x1wy�po:� � x �?�EA >�¾TÁGF'¡:z~m1wyo~wjx>{�v�wyo'm>{M��w(�Ywywyx${}o�o~s¢t�n©{}z�w:q jnpz�m@§Y��w��>s�n�xCz~wy��oM�rljm1w �,s��p�ps� jnpx1�5����s�����{}v¥�~w:{�qCoK�pnpx1wyo±�,��s�v �?�EAA>:Ä«{�x>q  j��npz�wyoKz~m1wyvz�s �?�EA1¾?E��@�1�~wy�>wFx>qCnpx1��w:{�t~m¹�pnpx1w �C� {��pnpx1w#xLu�v\�>wy�M� � �~��s���o\{���w\����npxCz�w:q�s�x��?�EAAD �����C À�� >MÄ�� C z�{}��wyo#z�m�w$o�{}v$w${}����u�v$wyxCz�o {}o À��A>MÄ!� C w���t�wy�1z\z�mY{�z#��s�uJ{}�po�s«o~�>w:t�n �B�J{�§>�pw�Ys�npxCz�wy�M� C À��A>MÄ�� C J&�?�EA¢¾ E��KL�ÁLÁCÁCÁ M n�o�w��u1np��{��pwyxCz�z�s#À��A>MÄ!� C JYÁCÁLÁCÁ M �SE] Â#>MÄFD �}Ä�EC¿F�9Áa½ Ã}¿LÀ>Â#D ����Ã�Å Dns Â#>MÄ�D��}Ä�EC¿��DC S D?�Y½ S Å@�1¾ ECÀ

]ES@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH@ AAD C >MÄ�D3g � �$I Q>MÄ�� Â#>:Ä�DMÄ>¾a`ao V>MÄ��7D?�@�1¾���� C ÂCÃ�Åa`ao V½TF>à � = E C # � � � #"�� % V SE] � ��� �"�� >��>AAD C >MÄFD\A >MÄ �?�EA >�¾TÁGF ]ES

¿>Ã#>:ÄKJ M N[*F�>�Â#DkJg � �$I M N> C J C ÅAD �A�kJ = E C L � ��� !"�� L �?� AA>MÄ M ` ` � ����� M N> C J C D?�@�1¾��J&� �EAA>MÄ M � `ao M NC À��A>:Ä�� C J&� �EAAD?��� LTf I ���1¾��3A�E!�A>MÄ1Å1�AD�Ã*AA>MÄ1ÅBj�ÄXf MeVD?���1¾ ��� C ÂCÃ�Åa` Q V

W> C J C D�¾ C J&�?�EA >MÄ M � `Qo MC À��A>:Ä�� C J&� �EAAD?��� LTf���>�Â#D�DMÄBAAD\Aij}ÄXf MeV

½�Â#D�à �AD?���J �?�EAA>MÄ M V= �AD�Ã\_ V�SE] D\mA> � �*F�D [�FF>�Â#DJÂC¾L¾}À ]ES

WD�Â���D NÂ#>MÄ�D:Ä>¾EPEP VSE] >MÄ ��F�D¹Ä�D\m@�ºÂ�>MÄ�DXL3f h *AkfH>��.E���D\A1�1¾1�AD��?��� >C½?�H��FFD

eLr

Page 31: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �B� � � � � ���'� � �K� � �

Ä�EC¿ = D?�H�1¾� A >�ÅA>?�A��Á]ESC À��A>:Ä�� C J&� �EA1¾ E�� L�f h �A s�fkL�Â#>MÄ�DMÄ�¾ MeVC À�E�� �kJ = E C L �?� A1¾ E�� MIV

WW

C À��A>MÄ�� C J&�?�EA D?���KL f h A·Â#>MÄ�D@�3[��A>?�@�ADMÄIj}Ä fkL@Â#>MÄFDMÄ>¾ MeVD�mA>?�J&D ���1¾���� C ÂCÃ�Å MeV

W

C D ���1¾��J M {�xYq C D�¾ C J M {}��w@npxLz~wyx>qCwMq¹z�s¹ta��{��~n��,� {}v\�1np��u1s�u1oK��wyz~u1��xP��{}��u�wyo:��+±wy��wz�mY{�z�! o¤x1s�zK{\�1�~s��1�pwyv�o~n�xYtaw${ � �����$��wFz�u1�~x���{}��u�wK�,��s�v C Å D?�A�kJ M ty{�x�s�x1�p��v$w:{}x«wyx>q��s�� �,§>�pw�¡C��u1zj jnpz�m\�Bs��jnpx1o�za{�x>t�w ÅAD �E[J M o~u>t~m�qCs�u1�1�pw t�m�w:t~�Lnpx1�\npo�x1w:tawFo�o�{}���C�

����"� � ����$��% ����� ��F(�� )�� � ak"���-�"��¦�s��$w Hetanpwyx>ta�C¡r j�~npz�npx1�¹z�s7§>�pwyo�u1x>qCwF� »±x1n���n�o@u1o~u>{��p�p�J��uC£VwF��w:q�¡Ko~s¹À��A>MÄ!� C JYÁCÁLÁCÁ Mv$np��mLzTx1s�zjnpv$v�w:qCn�{Mz�wF���#�1�~s¢q¢u>taw �C�Cz�wyoK{�z �?�EA1¾?E����9­Cm1s�u��©q���s�u1���1��s����a{�v�ta��{}o�m«o~sLs�x{M�Bz�wy� { À�� >MÄ�� C J M tas�v�ve{}x>q\��s�u�v$np��mCz�x1wy��wF� o�wyw\z~m1w\s�u�z��1u1zM� � �j��s�u« |{}xCz�z~s\�,s���tawo��Cx>t~m1�~s�x1s�u1ors�u1z���u1zj��s�uety{}x� »jo�wJ� �EAAD?���$´B jm1n�t�m@npoju1o~u>{��p�p�\u1xC�1uC£�wy��wMq1µjnpx1o~z�w:{�q@s�� � �EA1¾ E��V�� »jo�w C@C  E��TF J&�?�EA1¾?E�� M z~s6#>u�o�m«s�u1z(z~m1w o~z�{�xYq1{��aq$s�u1z���u1zj�1uC£�wy�:�� »jo�wJ�@D?� = E C J&�?�EA1¾?E��KL � ����� M z~s\o�z~s��@o�za{�x>q1{}��q@s�u1z���u1zj�>wFn�x��\�1uC£�wy��w:q&�

�F(�� )�� ) ����-�"���C½�Ã�Ä C npoj{ u1o~wa�,u1���<�psLs��Cn�x��5�~s�u1z~n�x�wj�,s��j��wyz~z�npx1�#n�x��1u1z:� � zj�psCs��CoT�,s���npx1�1u1zjs}��z~m1w¤�,s��~ve{�zqCwyoata��np�Yw:q¹npx«npz~o É o�z5{}����u1v$wyxCzr{}x>q«��u1z�o z~m1w#n�x��1u1zKnpxLz~s$z~m1w\��{��~n©{}�1�pwyor�Ys�npxCz�wMq«z~se�C�z�m�w�o~u>tytawFw:qCnpx1�«{��~��u1v�wyxCz�o:� � zj��wFz�u1�~x1oKz�m1wKxCu1v\�Ywy�(s}�({�����u1v$wFxLz~o(o~u>tytawFo�o<�Bu1�p���@�~w:{�q��­Cu1�1�Ys�o~wr��s�u# |{}xLz~w:q#z�m�wju1o�wy��z�sKz<�C�Ywjz�m1wynp�fo~u1��xY{�v$w�z�m�wyx$z~m1wynp�({���w(npx'� S(s�u�tas�u1��qqCs\z~m1npo:� �>MÄ�� Ã�Å D V½TF>à � Ä�Ã}¿�D$#�� o�% V>MÄ��1�AD ��E���Ä�� U1ÃC V¿>Ã#>:ÄKJ M NÀ!�A>MÄ�� C J\fTg�B�ÀFD�>MÄ B1¾?E��7�&E���Ä>Ã�¿�D·Ã}ÄBA Ã�ÅADXL ��FFDMÄaF�>?�1��F�D � D?� E���Äa_�D?BBj�ÄXf MeV[*F�>�Â#DkJg � �$I M N�AD ��E���Ä�� U1ÃCÂE` �L½�Ã}Ä C J�f h � h A fkL�Ä>Ã}¿�DXL �1Ã�ÅAD MIV> C J �AD?� E���Ä��JU¢ÃCÂ^` ` U M= �AD�Ã\_ V

D�Â���DÀ��A>MÄ!� C J\f ¾�����B�Á6g@��B � Å¢Ã#>MÄIj}Ä f MeV

WW

� �|��s�u¹u1o~w �C½}Ã}Ä C npx�z�m1npoK |{M��z�s�qCnp�~w:taz��p�«��wyz u1o~wy�#n�x��1u1z:¡9{�xYq«z~m1w\u1o�wF�5z<�C�Ywyo npxo�s�v$wyz~m1npx1��qCn�£�wy��wFxLz�z�s� jm>{�z �C½�Ã}Ä C J M npo5wa�1�Yw:taz~n�x��>¡ �C½�Ã}Ä C ��wFwy�1o$�~w:{�q¢n�x���u1xCz~n��jnpz~owyxCz�np�~w$npx1�1u1z#�pnpo�z npoK�,u�� §Y���pw:q�s���I � ��npo �~w:{�t~m1w:q&� � z#z��~w:{�z~o�{ x1wy j�pnpx1we{}o ��� /�)�F Ci-�.�)y�ljmCu1o#u1o�wy�~oety{}xJ�Yw:tas�v$w$��wy��� �,��u�o�z��a{�z~w:q7n�x¹z~m1npo\wa�>{�v��1�pw5n���¡9oa{M�L¡9z~m1wy�J��wywy�Pz<�C�1npx1�z�m�wynp�$x>{}v$w�¡�z�m�wyx m�n�z~z�npx1� 9 )0/�� A �1� ¨��Ywyz~z�wy�«oat~m1wyv$w�n�o\z~sJo~z�s��~w�u�o�wy�@npx1�1u1z�npx {}x

e É

Page 32: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � � � �� ���H� � � �i� � �+� � i� � � ���

npxCz�wy�~v$w:qCn�{}z�w#o�z��~npx1��{�xYq�u1o�w ���C½�Ã�Ä C J M ¡� jm1n�t~m�npo �pnp��w �C½}Ã}Ä C J M w���t�wy�1z#z�m>{}z npz�oK§>�~o�z{��~��u1v�wyxCz(npojz~m1wKo�z��~npx1�\ jm1n�t~menpo�z�s\�Yw o�tF{�x1x1wMq���K M N�M�n�xÁCÁCÁ>MÄ��1�AD �KL�mKL BKL � V�AD?�c`7���C½�Ã}Ä C J&�?��� LTfTmB` h A.BB` h A �B` h AkfkL �EmKL ��BKL ��� MeVÁCÁCÁ���C½}Ã}Ä C ¡1��n���wyx«{\o~z���npx1�vp mi`�HBB`Eb �B`��EdI!p¡� jn��p��o�wyzKz�m�w6m�¡ B�¡�{�xYq �@��{��pu1wyor{�tytas��aqCnpx1���p�{�xYq �AD?�@ jn��p�9�Yw\o�wyz z~s @o~m1s� jnpx1�@z�m>{}z�e$��{}�pu1wyormY{M��w#�>wywFx¹o�ty{}x1x1w:q�� � � �?���@n�o&p mBP7QBB`�� !p¡ ���C½}Ã}Ä C  jnp�p�'�~wyz�u���xJÌ@{�x>q  (s�xX! zrm>{}x1�«{�x>q@��s�u¹ty{�x��1�~n�xCzK{$u�o�wa�,u��fv$wyo~o�{}��w z~sz�m�w�u�o�wy�M�l9s«��w:{�q¹z~m1w$s���np��npx>{}��o~z��~n�x���npx'¡ C Å D?�A�kJ M npo�{@oa{M�,wF�5�~s�u1z~n�x�w\z�s�u1o�w�z�m>{}x¹Å D?�A�kJ M

o�npx>t�w� jnpz~m\Å D?�A�kJ M s�x1w�ty{}xX! z|t~m1wMt���z�s o~wyw n��'z�m�wrnpx1�1u1z��pnpx1wjnpo(z~sLs#��{��~��w��,s��(z~m1wr�1u¢£Vwy�M�ljm1nporo~z�np�p�'�pw:{M��wyorz~m1w5����s�����wFv¥z~m>{�z¤z�m1w#o�z~��npx1�$v@{M�$tas�xCza{�npx�{#x1wy j�pnpx1w\t~m>{��a{�taz~wy�#´,x1s�zwau1o~zK jm1npz�wyo~�>{�tawMµr jm�wyx�u�o�npx1� C Å D?�A�1� d¤x1w\v\u1o~zjve{���w {�x1x1s��Cnpx1�\�1�~s��Cn�o~nps�x1o±�,s��¤wyx>qCos�� �pnpx1wyo\z~m>{�z${}��w@x1s�z\x�w:tawyo~o�{��~�  jm�wyxPn�x��1u1z\npo\z��~w:{�z~w:q {}o${¹tas�xCz~n�xCu1s�u1o\o�z~��w:{}v s��t~m>{��a{�taz~wy��oM�

� � = �JI6K �� GH-2<�� � 6<8�; �J-N��; ��-��O�

ljm1w�x1wyw:qCo#s��r��{}����w�� oaty{��pw\s��~�L{}x1npo�{�z~nps�x¹{�x>q�o~u1�1�Ys���z��,s�� ve{}xL�@�1��{}z<�,s���v$o¤ve{M�@ve{}��wv$s1qCu���wFo\n�xYtas�v��1��wym�wyx1o�np�1�pw«u�x1�pwyo�o�o�s�v�w«u1x>q¢wy��o~z�{�xYqCnpx1�Js}� z~m1w�s���wy�a{��p�ro~z���uYtaz�u1�~w¹npo�L{}npx1w:q#§Y��o�zM�

������� � ��� ���� � � � � �'� � % � ����� ���� �ljm1wK�1�~wy�1��s1tawFo�o�s�� m>{}ojo�s�v�wru1o~wa�,u1��s��1z~nps�x1oM�;N�:"��L$ 9���/19 %1� $R/&"�;N% �'� t�v

@ >MÄ�½� EiAADafTAAD C >MÄ�D���ÁGFXfÁLÁCÁ@ >MÄ�½� EiAAD�C�AAD C >MÄ�D���ÁGFIH

ljm1w«qCn�£Vwy�~wyx>taw��>wyz< �wywyxºz�m�wyo�w«z< �s���{���n�{}xLz~o5npo#z�m>{}z\ jnpz�mPz�m1w@npx>ta�pu>q¢w:q §>�pw$npx�u�s�z�wFo:¡�npzKnpor§Y��o�zK�psCs���w:q@�Bs��rnpx�z�m1w\qCnp��wMtaz�s�����s��(z~m1w\o�s�u1��taw#§Y��w�� � x�w:{�t~m¹ty{�o~w�¡z�m1w@o�za{�x>q�{���q npx>ta�pu>qCw«qCnp��wMtaz�s���npwyo\s�x7z�m1w@o~�Lo~z�wyv {��~w@o�w:{}��t~m1w:q�{}o5 �wy�p�r{�o\{�xC�qCnp��w:taz~s��~n�wFo�v�wyxCz�nps�x�w:q�s�x«z~m1w�t�s�v$v@{�x>q#�pnpx1w5{E�,z�wF��z~m1w(py= " !E#V{}�>�K­Cwyw#z�m1w pp½:ÀCÀX!ve{�x\�Y{���w¤�,s��(v�s��~w�qCwyza{�np�po:�

,.0:$R� �.� 9B-�/10:$ 9F,.9F���et�vªjs�z~wKz�m>{}zjz�m1wyo~w5v@{�ta�~s�oj{��~w�w��¢�Y{�x>qCwMq@�>w��,s��~w�z~m1w5tas�v$�1np�pwy��npo|ty{}�p��wMq��9ljm1wy�«{�n�q��wF��np�1np�pn�z<�C� � x¹z~m1w\§Y��o�z#wa�>{�v��1�pw �Ywy�ps�  ¡f{$o~npv$�1�pw#o�u1�1o~z�npz�u�z�nps�x¹npo5qCs�x1w�� � x¹z�m1wo�w:tas�x>q�¡1{}x\n�x¢� �pnpx1w�ve{�t���sKnpo(qCwa§>x�w:q�¡C jm1s�o�wrw��¢wMtau1z�nps�x$o�m�s�u1��q#�Yw�� {�o~z�wy��z�m>{}x\z�m1ww��u1np��{��pwyxCzf�Bu1x>taz~n�s�x'�

@ AAD C >MÄFD � � � � ��� #"�� I Q\oEoEo½�F>Ã��7�?���&# � � � � ��� #"�� I�% VÁLÁCÁ@ AAD C >MÄFD ��� PJmKL B M J J�m M HnJ B M � J�m M s�J B MEM>:Ä��P¿>Ã�m��}Ä@EC¿ V¿>Ã�m��}Ä@EC¿c` �@� PJ&>XLY MeV

ÁLÁCÁ

e�Ì

Page 33: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � � � �� ���H� � � �i� � �+� � i� � � ���

$ �'��!#%&��%&�'��02/�%1��$ /1"�;�%1�:� t�vËf�ps1t~�Lo#s���t�s¢q¢w tF{�xJ�Ywet�s�x>qCnpz~n�s�x>{��p�p��tas�v$�1np�pw:q�{�tyt�s���q¢n�x���z~s«z�m1w�wa�1npo�z�wFx>taw«s����{��pu1wfs}��{¤�1�~wy�1�~s¢t�wyo�o~s�����{���n�{}�1�pw��Y¨·��{}��n�{�����wfty{}x5�Ywjta��w:{}z�w:q#u�o�npx1�rz~m1w p @ AAD C >:Ä�DB!�1��wy����s1tawyo~o�s��#qCnp��w:taz~np��wKs��ju1o~npx1�\z�m1w pr= � !Cs���z�nps�x@{�zrtas�v$�1np��{�z~n�s�x5z~npv$w��9ljm1w¤§>�~o�zz< (s\wa�>{}v$�1�pwyo¤o�m1s� jo¤m1s�  qCwy�1u�����npx1��o�za{�z�wFv$wyxCz�oKty{�x�w:{}o�np�p�$�Yw5o~ jn�zat~m1w:q�s�x«s��s�£f�9ljm1w¤§>x>{���w���{}v$�1�pw¤o�m1s� jojm1s� º�1�ps1t~�Lojs}� tas1qCw ty{}x«�Yw q¢wa� {�taz�np��{}z�w:q��@ > C AAD C � I � � À�� >MÄ�� C J�fMÅ1¾��^FFD?�AD*j}Ä f MeV

@ D�Â#��D��¾�¿�D?��F�>:Ä1ÅJ MeV

@ DMÄBAA> C SE] � I � � ]ESÁLÁCÁ

@ > C AAD C >MÄFD\AJ � I � � M@ AAD C >MÄFD � D = E¢ÅJ�m M À!�A>MÄ�� C J�m M@ D�Â#��D@ AAD C >MÄFD � D = E¢ÅJ�m M@ DMÄBAA> C> C J�>>`E`Qb M N

YEPEP V� D = E¢ÅJEJ\f\Y1>��¹Ä>¾�[ h ABj}Ä fkLlY MEMeV

W

@ > C oSE] ��F�>���½�¾�A D^[¢¾}Ä�+ �1�AD�Ã1½TF1��F�D ½�¾}¿CÀF>�Â#D?� ] SÀ��A>MÄ�� C J\fMÅ1¾ �DF�D �AD*j}ÄXf MeV@ DMÄBAA> C

�����"� � � � �� � ��� �� � ��� � � ����� �²@s1qCu1��{}��npo�{}z�nps�x«x�s�zKs�x1�p�«v@{���wyorz~m1w5o~s�u1�ataw$v�s��~w w:{�o~��z~s@ve{�xY{���wK�1u�z npz�o~�>wFw:qCo#u1���w�� tas�v$�1np��{�z~nps�x'����s�u�x1wyw:q@s�x1�p�\��w:t�s�v$��n��pwjz~m1w5t~m>{�x���w:q�o�s�u1��t�wK§>�pwyo:�9¨¤�po�s>¡C�C����wywy��n�x��z�m�w " S � tas�v$�Ys�x1wyxCz~ornpx�s�x1w�§>�pw$´<{�x>q��>wF��m>{}�1o z�m�w5z~wa�1z z�s��>w\�1�~npxLz~w:q�n�xCz~se{�x�s�z�m�wy��µs�x�wety{}xJv$s���w#w:{�o~np���Jt�s�xC��wy�~z5z~m1w$o~s��,z< j{��~w$z~s«��u1x7s�x7s�z�m�wy�5v@{�t~m1npx1wyo#{�x>q�npx¹s�z~m1wy�x>{}z�u1�a{�����{�x1��u>{���wyo:�Ëf�@qCwa� {}u1�pz:¡��,u�x>taz�nps�x1o|{}x>q\��{}��n�{�����wFo|qCw�§>x1w:q�s�u�z�o�n�qCwKs}�'�,u1xYtaz�nps�x�o|ty{}x@�>w {�tFtawyo�o~w:q

�,�~s�v s�z�m1wy�±§>�pwyo:¡� jm1wy�~w z�m1wF�$o�m�s�u1��q��>w qCwMta��{���wMq@u1o�npx1�\z~m1w9D\m@�AD?��Ä$��wy�C �s��aq�� � �fm1s� ��wy��wy�rz~m1w5��{}��n�{�����w¤nporqCwa§>x1wMq�{}o:�?�1à �A>C½1¡Cnpzrty{�xX! zj�Yw�{�tytawyo~o�w:q �,�~s�v s�z�m�wy�j§>�pwyoM� � x@z�m1w�,s����ps� jnpx1�Kwa�>{�v��1�pw�¡ p >B!p¡epyYe!L{}x>q�z�m1w¤�,u1xYtaz�nps�xqp ¿�D�Ã�ÄX!C{��~w t���w:{}z�w:q�npx C >�Â�D$Q�Áa½ �1u1zjs�x1�p�p >B!1ty{�x@�Yw {�tytawyo~o�w:q �,�~s�v C >�Â#D U Á�½1�SE]HC >�Â�D$Q�Áa½ ]ES>MÄ��7> V�?�1à �A>C½1>MÄ��cY V�?�1à �A>C½1>MÄ��P¿�D�Ã�ÄKJ&>MÄ�� ÃL >MÄ�� =RM NÁCÁCÁ

SE]HC >�Â�D U Áa½ ]ESD\m�� D?��Ä >MÄ��7> V

ªr{}v$wyoKs���wa�1z�wy�~x>{�����{��~n©{}�1�pwyoro~m1s�u��©q��Yw\��wy�1zKo~m1s��~z�x9s�x����@z~m1w#§>��o~z5®�npx1npz�n�{��9t�mY{��<�{�t�z�wy�~o�{}��w\��uY{���{}xCz�wyw:q�z~s@�>w\o~n���x1n�§Vty{}xLz#´Bz�m1s�u1��m¹npx��1��{�taz�npo�w\z~m1w\§Y��o�z#ÌLfLf@t~m>{}��{�t�z�wy�s��Bz�wyx«{��~w:µy�

S(s�u¹o~m1s�u��©q ��wywF�Jz�s�{«v�n�x�n�v#u1v z�m1w�xCu1v\�>wF� s��r����s��>{��T��{���n�{}�1�pwyo:� S(s�uJty{�x7u1o�w>MÄ�½} EBAADr§Y��wForz�s#ve{}x>{���wr��s�u1�����ps��Y{��Y��{���n�{}�1�pwyo:�É �j��s�x1o~z���uYtaz { p Å1ÂC¾ = ÃLÂ#�9ÁGFX!�§>�pw� jnpz~m�{��p�'s}�f��s�u�� @ AAD C >MÄ�D�o|{}x>q@��{��~n�{��1�pw qCw:ta��{}��{M�z�nps�x1o�npx\npz:�f²«{}��wro~u1��w {}���Y��{��~n�{��1�pwyo({}��wKqCwa§>x1wMq«{�o D\m@�AD?��Ä1o:� � x>ta�pu>qCw¤z�m1npoT§>�pwrnpx

eLe

Page 34: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � � � �� ���H� � � �i� � �+� � i� � � ���

{��p�>z~m1w �~wy�pwy��{�xCzjo�s�u1��t�wK§>�pwyo:�Ì�� � x«z�m1w�§>�pw z~m>{�z tas�xLza{�npx1o¤��s�u��j¿>Ã#>:ÄKJ M ¡1��s�u�{}�L{�npx@m>{M��w�{}����z�m1w#��{��~n�{��1�pw qCwa§>x�n �z�nps�x1oM¡Cv$npxCu1ofz~m1w9D�m��AD?��ÄF�1��ljm�n�ojnpo�npv$�Ys���za{�xCz�$n��'z�m�wy�«{���w {}����qCwa§Yx1w:q D\m��AD ��Ä'¡z�m1wK�pnpx1��wy�j jnp�p�Yx1s�zj�Yw {��1�pwKz�s${}���ps1ty{}z�wrv�wyv$s������,s���z�m�wyv��

S(s�u@ty{�x@{�t~m1npwy��wrz�m�n�o� jnpz�m�z�m1w¤m1wy�p�$s}��z�m�wr�1�~wa� ����s1tawyo~o�s��Kn��'��s�u1�fÅ1ÂC¾ = ÃCÂ#�9ÁGF��psCs��Co�pnp��wrz~m1npo:� �@ > C AAD C � ��$�� �@ AAD C >MÄ�D-I PEg�I � �@ D�Â���D@ AAD C >MÄ�D-I PEg�I � � D\m@�AD?��Ä@ DMÄiAA> CI�PEg I � � >MÄ��PÄ�EC¿��C¾ C � C >�Â#D�� VÁCÁ� x5z~m1npo' j{M�L¡Mz~m1w�p I�PEg�I � � !a�Yw:tas�v�wyoKp D\m��AD ��ÄX!ynpxKwy��wy����§>�pwfz�mY{�z'npx>t���uYqCwyo9Å1ÂL¾ = ÃCÂ#��ÁGF'�ljm1wKz��~n�t���npojz�m1wyx�z�s#m>{M��w

@ AAD C >MÄ�D � ��$�� �@ >MÄV½� EBAAD fMÅ1ÂC¾ = ÃCÂ#�9ÁGF fnpx$z~m1wK§>�pw tas�xCza{�npx1npx1�#z�m1w¤¿>Ã#>:Ä$�~s�u1z~npx1w��� �'��s�uX! ��wjty{��p�pnpx1� {r�~s�u1z~npx1wjnpx\s�x1w�§>�pwT�,��s�v¬{}x1s�z~m1wy�T§>�pwjn�zT! o {}�p�Lz~m1wrv�s��~w(npv$�Ys��~z�{}xLz�,s���z~m1w\�Bs���v@{����>{��a{�v$wFz�wy�~o z�s«�Yw$qCw:t��©{}��w:q7tas��~��w:t�z��p�L�«ª±s�z~w\wyo��Yw:tan�{��p�p��z�m>{}z z�m1w$q¢w:t~�

��{��a{�z�nps�xZp D\m��AD ��Ä ½TF>à � ] mk!Ynporx1s�zrz~m1w5oa{�v�w5{�o p D\m��AD?��Ä ½TF>Ã��am&#�%k! es�x1w npoKs��fz<�C�>wp À>¾�>MÄ��AD?�i=��1¾E=�½�F>Ã��I!�{�x>q�z�m�w�s�z�m1wF�rnpo�p Ã����1à BB=C¾ C = ��B�À�D*=1½TF1à �k!�´,o~wyw#o�w:taz~nps�x É r�µy�

�����%� � %�� �

� � ��s�u·mY{M��w@ve{}xL�¹o~s�u1�ataw@§>�pwyo���s�u q¢s�xX! z\x1wywMqPz�s¹�~w:tas�v��1np�pwez~m1wyv {��p�jn�� ��s�uPs�x1�p�t~m>{�x���w#s�x1w#s��(z~m1wyv��5ËT�« j��npz�npx1�@{#¿>Ã�_�D C >�Â#D5z~m>{�z qCwyoata��np�Ywyo#m1s�  z~m1w5w��¢wMtau1z�{}�1�pw\npo�1�~s¢q¢u>taw:q��,��s�v z�m�wjo�s�u���taw±§>�pwyo:¡�z�m1w±¿>Ã\_�Drtas�v$ve{}x>q¤ jnp���YqCs {��p�1z�m�wj (s����K�,s��f��s�u'��ljm1w�,s����ps� jnpx1�¤ve{���wa§>�pw�o�{M�Cofz�mY{�z9À1Å�¿ q¢wy�>wFx>qCojs�x\z< �sK§>�pwyojÃTÁ�¾ {�x>q = Á ¾Y¡�{}x>q#z�mY{�z�z�m1wy�#npxz�u���x¹qCwy�Ywyx>q�s�x«z~m1wynp� tas��~��wyo~�>s�x>qCnpx1�@o�s�u1��taw#§Y��wFo ´ ÃTÁa½${�x>q = Áa½ M {}x>q�{$tas�v$v$s�x#§>�pw>MÄ�½}ÂTÁGF'�À1Å�¿ s@ÃfÁ�¾ = Á ¾½C½>= � Ã�ÃTÁ�¾ = Á ¾ =L¾ À1Å�¿

ÃTÁ�¾Ks >:Ä�½�ÂTÁGF�ÃTÁ�½½C½>= � Ãa=�½·ÃTÁa½

= Á�¾Ks >:Ä�½�ÂTÁGF = Á�½½C½>= � Ãa=�½ = Áa½

³�npx1wFoj jn�z~m«{(p�s !f{��~w�s}��z~m1wK�,s���v�1Ã��LÅAD?� s�AADMÀ�DMÄiAADMÄ�½�>@D��¿>Ã�_FD@u1��q1{�z~wyo\{@z�{}����wFz5s�x1�p��n��jn�zT! o s���qCwy�#z�mY{�xJ{�§>�pw�n�z#qCwy�Ywyx>qCo\s�x'�@ljm1w$ j{M��z�m>{}zz�m�wrz�{}����wyzjo�m1s�u1��q#�>w¤u1��q1{�z~w:q�n�o�qCwyo�t���np�>wMq@s�x�z�m1w¤��npx1w��Bs��p�ps� jn�x��rz�m�w q¢wy�>wFx>qCwyx>t��$�pnpx1w´ ª±s�z~w��fz~m1npoj��npx1w¤x1wyw:q¢orz�s\�Ywy��n�x@ jnpz�m@{&g ��� t~m>{}��{�taz�wy�aµy�+jwy�~w*! o|{¤v�s���w�tas�v��1�pwa�5wa�>{�v��1�pwfs���{¤¿>Ã\_�D C >�Â�DT�,s��f{K����s�����{}v ty{��p�pw:q A@���AD�D1��¦�np��o~z

o�s�v$w¤��{���n�{}�1�pwyo|{}��w ta�~w:{�z~w:q�{}x>q${}o�o~n���x1w:q�� � x@z�m1nporty{}o�wKz<�C�1npx1��p ¿�Ã�_�DB!� jnp�p��{�z�z~wyv$��z(z~s��wMtas�v��1np��w#z�m�w�A���� D�D$����s�����{}v ´,�Yw:ty{}u1o�w@z~m1weqCw�� {�u1�pz za{��~��wyz npo z~m1w\§Y��o�z#z�{}����wyz v$wFxC�z�nps�x1w:q1µF� � �({}xL�@s}� z~m1w s��*waw:taz±§>�pwyornpzrqCwy�Ywyx>q¢o s�x«{��~w s���qCwF�jz�m>{}x«z�m1wFn��Ktas��~��wyo~�>s�x>qCnpx1�o�s�u1��t�wK§>�pw�¡1z~m1wyx@z�m�wyo�w s��*waw:taz±§>�pwyor{��~w ��wMta��w:{}z�w:q&�ljm1w@z�{}����wFz�o\x1wywMqCxX! z\�>w@�1�~s�����{�v�o:� � x7z�m1npo\wa�>{}v$�1�pw�¡�z<�C�1npx1��p ¿>Ã�_�D�½�Â�D�Ã}ÄX!� jnp�p���wFv$s���wK{�xC�#§>�pwyoKta��w:{}z�w:q�qCu1��npx1�\z~m1w tas�v��1np��{�z�nps�x5�1�~s1tawyo�oM�

e�¯

Page 35: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ���>��� � � � ��� � �

@ � Ã�_�D C >}Â#D C ¾��aA��@�AD�D� I�� ` = � ÃQ= �# � �$ ��� � `��?J � I�� M = �� � ��� � `� " �! `c=CÂ}¿>ÃLÂCÂC¾�½�=LÂJP�¿ =CÂJP��c=C P3Q�Q3=CÂ�¿

�A"?� ��" � ` S E��?� S ÂC¾�½�ÃC S = >MÄ S P3Q�Q����� ��" � ` S E��?� S ÂC¾�½�ÃC S ¿>Ã}Ä S ¿>Ã}Ä�Q� ��� I $ g � � ` A��@�AD�D9Á�¾ � �Y½9Á�¾- ��¢Ã}ÀEFjÁ�¾ @ E���>:Ä1Å P�¿ �1Ã}ÀEF

� � $�� ��� " � I ` A����AD@D9Á2Q3A����AD@D9Áa½ � Ã\_�D C >�Â�D � ���AD@D^g@�AD�D9ÁGF g��AD�D u ÁGF jA���� D�D*=#>9Á�Fag��AD�D�Áa½ � �Y½9Áa½ � �>½9ÁGF � �>½ u ÁGF ��1Ã�ÀEFjÁa½ �1Ã}ÀEFjÁ�F �1Ã}ÀEF u ÁGF

A���� D�Ds��?J � ��� I $ g � � M�XJ $�$ M =C¾ A���� D�D��?J � � ��� � M �?J � ��� I $ g � � M �XJ � " �� M

� �Y½�Á�¾,s � �Y½9Á�½�XJ $�$ M =�½��?J $ ��� � M � �Y½9Á�½

��1Ã�ÀEFjÁ�¾,s ��1Ã}ÀEF|Áa½�XJ $�$ M =�½��?J $ ��� � M ��1Ã}À FjÁa½

A���� D�D9Á�¾,s A����AD�D�Áa½�XJ $�$ M =C¾ A���� D�D9Á�¾a=�½��?J $ ��� � M = � g � I�IaA����AD�D�Áa½

>MÄ�� �1ÃCÂCÂ,s A����AD�D�A��@�AD�D9Á2Q½:À A���� D�D�?J � "?� ��" � M½:À A���� D�D9Á2Q�XJ ����� �F" �XM

½�Â#D}Ã}Ä�s��¿ = C A���� D�D ] Á�¾º½�¾��AD��1Ã�ÅA�·ÃTÁ�¾ E��

� � 0 � � IJ8989-�� 8

������ ������ ���� � % ��� �� � ���� � �­Cs�v$w�t�s�v$��n��pwy�~ofm>{M��w�#�{���ojz~s\z�u1�~x@s�x@wa�1z��a{\t�m�w:t~�Lnpx1�Y�9ÅY½L½K�Bs��jwa�>{�v��1�pwjm>{�or{(= �1ÃCÂCÂs���z�nps�x¹ jm1n�t~m¹��np��wyo5{@�pnpo�z s}�ro�u1o~�1n�tanps�u1o\tas�x1o�z~��u>taz~nps�x1o${}o  (wF���j{�o�z�m1w�u1o�u>{}�rtas�v��1np�pwwy�~��s��~o:�ljm1wy�~w5{��~w5{��po�s#��s�u1z�npx1wFojz�m>{}zr{���w�u1o�wa�Bu1�� ��m1wyx@{ o~�Lo~z�wyv�ty{}����� {}n��pofnpz���wyx�wy��{}���p�#o�wyz~o�{}x$wa�1z�wF��x>{}����{���n�{}�1�pwrty{��p�pw:q D?����Ä>¾ z~sn�xYqCn�ty{�z~w5z~m1w\��w:{}o�s�x¹�,s��r�<{�np�pu1��w��\»±o�npx1��À�D ���1¾��J M ´B jm1n�t�m¹za{���wyo5{�o�z~��npx1��{}o {}x{�����u1v$wFxLzaµ� jn��p�1����npxCzfz�m1wjo~z��~n�x�� s�u1z�{�x>q#�1�~npxLzTz�m1w¤wy���~s���v$wyo~o�{���wrtas��~��wyo~�>s�x>qCnpx1�z�s\z�m�w���{}�pu1wrs}� D?����Ä>¾� Ã�����D?���RJ M n�o�u1o�w��,u1�C�,s��'�1u�z�z�npx1� qCn�{}��x1s�o�z�n�tao�npxLz~sr�1�~s�����{�v�o:� ��m1wyx#n�z�npo'wa�1w:tau�z�w:q�¡n �rz~m1w@wa�1�1��wFo�o�nps�x·npz#z�{}��wyo\{�o${}xJ{�����u1v$wFxLz�n�o�� {}��o~w«´ �ywy��sCµy¡jÃ#���@D?�����1��npxCz�o#z�m1wwa�1�1��wyo~o�nps�x?! o¤��{��pu1w {�xYq$z~m1w �ps1ty{�z~nps�x@s��fz�m�w5{�o~o�wy�~z tF{��p�<�f­Cwyw#z�m1w s�xC�<��npx1w¤ve{}xLuY{���>{���wr�Bs���v$s��~w�qCwFz�{�np�po:�� �|u�o�npx1�@z�m1wFo�w\�<{�np�<¡1z��~��o~s�v�w s��jz�m1w#�Bs��p�ps� jn�x��>� � �|��s�u1�Kve{�t~m1npx1w*! or��{�t~�Cnpx1�e{}xC�«s��z�m�wyo�w ����s�����{}v$o:¡��psCs��#�,s��j�1u1�1�pn�tKqCs�v@{�npx5��wy��o~nps�x1oM�

eLf

Page 36: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ���>��� � � � ��� � �

/1%&�#�Ft v npo|{#�1�~s�����{�v� jm1n�t�m���np��wFojz�m1wKo�s���zjs}�� j{���x�n�x��5v�wyo�oa{���wFor{��Ys�u1z pÇu1xCu1o�w:q���{}��n��{��1�pwyoT!'{�x>qDpÇ j��s�x1�@xLu�v\�>wy�Ks}�±{}����u�v$wyxCz�oT!�z�mY{�zKx1s�x¢� � tas�v$�1np�pwy��o¤u1o�uY{��p�p�«��np��w��Â�>MÄ��¹z�{}��wyo�v$s�o�z#s�� z�m1w�o�{�v�we{}����u�v$wyxCz�o${}o\z�m1w�tas�v��1np��wF�:� � z\x1wywMqCo@o��Yw:tan�{����np�1�a{��~n�wFo( jm1n�t~m«{��~w {}�p��w:{�qC�$�1�~s��Cn©q¢w:q��

$����2_ t v l9s«o�m1s� � jm1n�t�m7�,u�x>taz�nps�x1o�tF{��p�j jm1n�t~m'¡fu1o~w�½ C ÂC¾�[���ljm�n�o#�1�~s¢q¢u>tawyo@{�xPnpxC�qCwyxCz�w:q�s�u1z��1u�zj jm1n�t�m@{��po�s#��np��wyo|{}x$n�qCw:{�s����,u1x>t�z�nps�x@ty{��p��x1wyo~z�npx1�Y�9¨rxe{}x1o�n��<n �yw:q�¡v\u>t~mrwyx1mY{�x>tawMqK��wy�~o�nps�x�n�o'{M��{}np�©{}�1�pw��C� C ��Àj�,�~s�v � ECÄ���>?� D9Á ECÄ�½�Á D\A�E�s S À�E =IS Â�>MÄ�EBm S AAD�U D� S $

$ @ t�v l�s�o�za{�x>q�{���q¢n�o~w@z�m1w�n�xYqCwyxCz�{}z�nps�x¹s}����s�u1�#�1��s�����{}v�¡�o�wyxYqJnpz z~m1��s�u1��m�½ = ¡f{���>w:{}u1z�n�§>wF��x½ = E1Å1Â�B(Áa½�HºÂL¾JUAD�Â�B(Áa½

$ K5� 9gu ;yt�v z~wy�p��o#��s�uJ jm1wF��w@��{��~n©{}�1�pwyo5{}x>q��,u�x>taz�nps�x1o�{}��w�v$wyxCz�nps�x1w:q�� � z�! o#wyo��Yw:tan�{}���p�u1o�wa�Bu1�' jnpz�m�v\u1�pz�n��B§>�pwjo�s�u���tawyoM�0:!#@ t�v � s�x����#u1o~w�Ã�A = z�s o~wywK jmC��{ t�s���wKqCu1v��5m>{}�1�Ywyx1w:q�� � �Rp ¿�B�À��¢¾�Åk!�ty{�u�o�wyor{ t�s���wqCu1v$�\z~m1wyx

Ã*A = ¿�B�À��1¾�Å�1½

 jn��p�9o�m�s� ¬��s�u� jm>{�z �,u1x>taz~nps�xX! oK��wyz~u1��xP{�q1q¢��wyo~o�wyo\ �wy��w�s�x�z�m1w�o�za{�t~�� jm�wyx¹z�m1wta��{}o�m�m>{��1�Ywyx1wMq�¡'{�xYq$ jmY{�zrm�wa� {��~��u1v�wyxCz�ojz~m1wy�@ (wF��w\ty{��p�pw:q@ jnpz�m�� �¤u1npzru1o~n�x���@�

35^5, @ �:/1%C$�c]9F@�"�7:7'9F�L;�t v A = m�¡mEA = ¡fs��#ÅEA = ve{M�«�Yw«{M��{�np��{��1�pw#z�s¹��s�u'�¹ljm1wF�·{��~wo��Cv\�>s��pn©t�o~s�u1�atawa�<�pwy��wy�fqCwF�1u1����wy��o¤u1x>qCwF�r jm1n�t~m@��s�u«ty{}x@��u1x«{#�1�~s����a{�v npx@z��a{�tawv$s1qCwr{��p�ps� jnpx1�K��s�u$z�s#u1o~w�����w:{}�L�Ys�npxCz�oM¡ �u1wy�~�$��{}��u�wyo:¡�wyz�t}�fl9s5u�o�wKz�m1npoj��s�u\ jnp�p�m>{M��w¤z�s#§>�~o�z�t�s�v$��n��pwj��s�u1�j�1�~s�����{�v� jn�z~m@z�m1w6=�Å(#V{}�>�

$L!#92$ /Pt�v ljm�n�o��1��s�����{}v ty{�x7m1wy�p�¹ jnpz�mJ� qCw:ta��{}��{�z~nps�x1oM��­Cwyw�ve{}x��>{}��w �,s��5q¢wyz�{}n��poM�­Cs�v�wjwa�>{�v$����wFo:� �H�I�S���r��4aDU���b aDU���b�J4KDU{W4\D[DJ��MJ�R J4K�KDJ4L V4W \�V�S�ID[DU4K [DV W4H�I��4[?S(V=I KDU4[4HDK4I�S�I�3S�ID[S�ID[ )�N4W4\D[DJ��9+%-�*D)�*H�I�S���r �4aDU���b U �4\�b�J�S�IMS�ID[��)�N4W4\D[DJ��9+-�*�)�*�aDU���b�J4KDU{W4\D[DJ�� J�R3J4K�KDJ4L V4W \�V�S�ID[DU4K [DV W4H�I��4[?S(V=I KDU4[4HDK4I�S�I� S�ID[

½�AADC½�Â#npo|{M��{}n���{}�1�pw��,��s�v¥{��at�m�n���wyojnpx�½}¾}¿CÀjÁ �}¾ E��Y½�D@�9Á ECÄ�>�m S U¢¾C E�¿�D �Y�02� � 0F^ @ �:"���!�;et�v � �f��s�u?! �~wKu1o�npx1��Å>½C½ z~m1wy��w�! o {��>{�zat~m«z�m>{}zj�pwyz�o¤��s�u@t~m1w:t~�« jm1wyz~m1wy���s�u?! �~wr��s�npx1�#s�£�z~m1wKwyx>q@s}� {�x«{}����{M�C�

����"� � � ��� � � ��� � � �% ��� �� npo¤�>{�o~w:q�s�x«z~m1w#�1��npx>tanp�1�pw#z�m>{}zK�1��s�����{}v$v�wy��o��Cx1s�   jm>{}zrz~m1wy�k! ��w$qCs�n�x��>¡1o~s@n�zK�pwyz~oz�m�wyv���wyz@s�xº jn�z~m�npze{}x>q q¢sLwFo�xX! z@��wyz@npx�z~m1wynp�« j{M�L� ljm1��s�u1��m�s�u1z@z�m�n�o@qCs1tau1v�wyxCztas�v$v$s�x@wy���~s���o#m>{M��w�{ �J{}��x1npx1��o�np��x�npx¹z�m1w\v@{��~��npx'� ¨ t�m�w:t~�L�pnpo�z�s��jv$s��~w5wF����s���o#npo��np��wyx$m1wF��w��

e�®

Page 37: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��� � � � ��� � �

�2D � )�� � hi%M;6$R9B/1/102��9B�'"�;� ¨ tas�v�v$s�x#v$npo~z�{���wjnpojz�s\z<�C�>w&py`e!Cnpx1o�z~w:{�q�s�� py` `e!p�> C J >*`� M�AD ��E���Ä Q V

D}Â#��D�AD ��E���Ä o V jn��p�({}�p |{M�CoK��wyz~u1��x Q@�>wMty{�u1o~w@z�m1w@{�o�o~np��x1v�wyxCz8p >*`�e!�m>{�o�z�m1w���{��pu1w �{�x>q �npoz���u�w &#Å>½C½B! or j{��~x1npx1�$s��1z�nps�x�ty{�xJ{}��wF��zK��s�u«z�s@z�m�n�oM� S(s�u�v�np��mCz|{}�po�s@z��~�«z�s@��wFzn�xCz~srz�m�w(m>{}�1npz's}�> j��npz�npx1�¤wa�1�1��wFo�o�nps�x1of�pnp��w�> C J E`E`#> M z�s¤o�{E�,wy��uY{���q���s�u1��o~wy���>�B��s�vz�m1npoj�Cnpx>q\s}��wy�~��s��M�� ��s�v$v�wyxCz�o1npx ��ty{�xX! z��Ywfx1wyo~z�w:q&�f»jo�wTz�m1wf����wy�1�~s1tawyo�o~s��(q¢n��~w:taz~n���wyo'z~srz~wyv$�Ys��a{���np�p�p t�s�v$v�wyxCz9s�u1zT!C�1�ps¢t~�Cojs��(tas1qCw��f­Cu1�1�Ys�o~w ��s�uemY{�q\z~m1wK�,s��p��s� jnpx1� tas1qCw��> C J >*`�� M�B`�¿�D�Ã}ÄKJmKL B MeV SE] ÅAD?�1��F�D�m�B�¿�D�Ã}Ä ]ES¿FD�Ã}ÄKJ � L B MeV

� ����s�u«qCw:tan�qCw:q x1s�z�z�s\�~n�o~�$�~u1x1x1npx1�#¿�D�Ã}Ä$��s�u�v$np��mCz(q¢s

S ] ½}¾}¿C¿�DMÄ!� �*F�>�� C �¢Ã�Å�¿�DMÄ!�º¾?E��> C J >*`�� M�B`�¿�D�Ã}ÄKJmKL B MeV SE] ÅAD?�1��F�D�m�B�¿�D�Ã}Ä ]ES¿FD�Ã}ÄKJ � L B MeV] S

�1u1zrnpz¤ (s�u1��qCxX! zj (s������>w:tF{�u1o~w\z�m1w�§>��o~z6p SE] !1 �s�u1��q��>w#ve{}z�t~m1w:q��C�@z�m1w p ]ES !Cs�xz�m1w(p ¿�D�Ã}Ä J�mKL B M !��pnpx1w#´,z�m�w�p SE] !Cs�x«z~m>{�z¤��npx1wK�Ywynpx1�$np��x1s��~w:q1µy¡Y{�x>q p ¿�D�Ã}ÄKJ �KL B MeV ! (s�u1��qCxX! z9�>wKtas�v�v$wyxCz�wMq s�u1z({�z�{��p�<� � x\z~m1npo(ty{�o~wKz�m1w±§>x>{��?p ]ES !} (s�u1��q �Yw�#V{}����w:q{�or{�x�wy���~s��M¡>��u1zj��s�u$ �s�xX! zj{��p |{M�Co��>w�o�s\�pu>t~�C�L�� ÁLÁCÁ>>`� VYa` Q\o V[*F�>�Â#D J&>*CEQ\oEo MeV> ` >*PEY VÁLÁCÁljm1npo�[*F�>�Â#D �psLs��@ jn��p����s\s�x��,s��jwF��wy�M�(ljm�w o�wyv�n�tas��ps�x@{M�,z~wy�rz~m1w  jm1np�pw tas�xYqCnpz�nps�xn�o {�xCu1�p�9o�z�{}z�wyv�wyxCzK jm1n�t�m��,s���v$o¤z�m1w\�Ys1qC�«s}�|z~m1w\�psLs��«o�s >$ jnp���f{}�� j{M�Cor�Yw Y�l {}��wK{M |{M�#z�m>{}z(o~wyv$n�tas��ps�x${�xYq > `7>*PEY#�>wMtas�v�wyo(z~m1wK�>s1qC�C¡C jm1n�t~m$npoj�1�~s��>{}�1�p� jm>{�zj j{�o�npxLz~wyx>qCwMq��� ��m1wyx7��s�u¹mY{M��w${�x7n���� wF��o~w\o�za{�z�wFv$wyxCz#x1wyo�z~w:q7npxJ{�x1s�z�m1wy�#n��ro�za{�z�wFv$wyxCz:¡f{}�p |{M�Co�1u1zj�1�a{�tawyoK{��~s�u1x>q�z~m1wKn � � wy�po~w��9ljmCu1o:¡�x1wy��wF�r j��npz~w��pnp��w¤z�m1npoM�

> C J C ¾C¾ M> C J = Ã � M

[A>MÄ<J MIVD�Â#��DÂC¾#�@D J MeV

´,z�m�w�D�Â#��D ve{}z�t~m1wyojz~m1w ta�ps�o�wFo�z:> C µy¡1{}�p |{M�Co���np��wrz�m�n�oM�

eLq

Page 38: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��� � � � ��� � �

> C J C ¾C¾ MN> C J = Ã�� M

[A>MÄ<J MIVD�Â#��DÂC¾#�@D J MeV

W

�P¼ s�xX! z(�Yw¤�,sCs��pw:q �L�\npx>q¢wyxCz�{�z~nps�x'� � x�z�m1wK�Bs��p�ps� jn�x��r�B��{���v$wyxCzfs�x1�p�\z�m1wKwa�1w:t�u1z�nps�xs���z~m1w(pyYa`ab V !Co�za{�z~wyv$wyxCzjnportas�x>qCnpz�nps�xY{��Yu1�>s�x@z�m1w ��{}�pu1wrs}� >1�ÁLÁCÁ> C J >*`E`Eb MYc`Qb V_ `Qb VÁLÁCÁ

� ljm1w s��aqCwy�Ks��fs��>wy�a{�z~n�s�x1oKnpx {}x«wa�1�1�~wyo�o~n�s�x�npo~xX! zr��uY{���{}xCz�wyw:q z�s$�Yw �pwa�,z � z~s��<��np��mCzM�¨ ��npx1w¤�pn���wà # >*PEP�%c` = # >*PEP�% V

 jn��p��m>{M��w qCn�£Vwy�~wyxCzr�~wyo�u1�pz~o {�tytas���qCnpx1�\z~s\ jm1wyz�m�wy�Ks��jx1s�zjz�m1w>#s�x@z�m�w �pwa�,z<�<m>{}x>qo�n�qCwKnporty{���tau1��{}z�w:q��Ywa�,s��~wKz�m1w �~np��mCz<�<m>{�xYq\o�n�qCwKnpojwy��{}��uY{�z�wMq��� ljm1wKs���q¢wy�rs}��s��Ywy�a{�z�s��j�1��wMtaw:qCwyxYtaw\o�s�v$wyz~n�v�wyo�o�u1�~�1��npo�wFor�Ywys��1�pw��ÁCÁCÁ� " ��I ]�C À VÁCÁCÁ> C J C ÀI` C ¾}À�DMÄ J C >�Â#D:Ä>ÃE¿FDXLvf �kf M `E` � ����� M�AD?��E���Ä J � ����� MIV

+jwy�~w�z~m1w«npxCz�wyxCz�nps�x·npo\z~sJz��~�Js��>wyx�n�x��·{�§>�pw�¡�z�m�wyx�t�s�v$�Y{���w@z~m1w«��wFo�u1�pz�npx1� C Àz�s � �����¹z�s¹o~wyw«n�� C ¾}À�DMÄ�� {}np��wMq��·»±xC�,s���z�u�x>{�z~wy�p�L¡T jm>{�z${�taz�u>{}�p����m>{}�1�>wFx1o\§>�~o�zn�o\z~m1w«z~wyo�z J C ¾�À�DMÄKJ C >�Â#DMÄ>Ã�¿�DXL�f&�kf M ` ` � ����� M  jm1n�t~mPm>{�o@{�xPnpxCz�wy��wy�$�~wyo�u1�pz´,x1s�xC���Fwy��s«n��(z~m1w\o�za{�z~wyv$wyxCzKnpoKz���u�w:µy��ljm1npoK��wyo~u1�pz npo�z~m1wyxJ{}o�o�np��x1w:q�z�s C À'�#ljm1wtas�v��1np��wF�ro�m�s�u1��q� j{���x¹��s�u¹{��Ys�u1z�z�m1npo �1�~s��1�pwyv��#ljm1wetas1qCw\o~m1s�u��©q�mY{M��w\o�s�v$wwa�1z���{#����{�t~��wyz�oM� �ÁCÁCÁ� " ��I ]�C À VÁCÁCÁ> C JEJ C À ` C ¾}À�D:ÄKJ C >�Â�DMÄ1Ã�¿�DXL�f&�kf MEM `E` � � ��� M�AD?��E���Ä J � ����� MIV

� ljm1w �Bs��p�ps� jn�x��5 �s�xX! zK �s����«{}o�w��¢�Yw:taz~w:q¹�Yw:ty{}u1o�w�z�m1w pzE!Vt~m>{}��{�taz�wy��x1wyw:qCo#z�s��>wn�xCz~wy���1�~wyz�wMq@�C�$z�m�w�o~m1wy�p�<�> C JEJ C À ` C ¾}À�D:ÄKJ\f?z S A1à �¢ÃefkL�f&�kf MEM `E` � � ��� M�AD?��E���Ä J � ����� MIV

S(s�uX! �p��m>{M��w�z~sj§>xYqKs�u1z���s�u1��m1s�v�wfqCnp��w:taz~s��~�5´Bu1o�w�ÅAD?� DMÄ$UJ\f ��� � Ikf M µ1{}x>qK{��1�Ywyx>qz�s\npz:�

eLn

Page 39: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ���>��� � � � ��� � �

� �L½�Ã}Ä C z�{}��wyo�Ci1+ �E/�)2AGFjz~s\z�m1w ��{}��n�{�����wFojz�m>{}z�{��~w ��s�npx1�5z~s\�>w#o�wFz:�jljm1w �,s��p�ps� jnpx1��,��{}��v$wFxLzT jn��p�'ty{}u1o�w {\ta�a{�o~mÁLÁCÁ>:Ä��7> V�L½�Ã}Ä C J�f h AkfkL�> MeV�SE] ��F�>��1�TF>¾?E>Â�A = D1�C½�Ã}Ä C J\f h A fkL �A> Ml]ES� ljm1wKv$s�o~zfu1x>t�s�v\�Bs���za{��1�pwj�1u���oj{���wKz~m1s�o~w�z~m>{�z�o�wFwyv¥z~s\v$s���w|{}oj��s�u\mCu1xCzjz~m1wyvqCs� jx'�'¶9u�z�npx o~s�v�w9À�� >MÄ�� C J M o�za{�z�wFv$wyxCz�of{}x>qKz�m�wy� w�u1o�z9qCnpo�{����>w:{}� s��'o~wywyv z�sY�ljm1npo t�s�u1��q�v$w:{}x z�m>{}z9��s�u?! �~w( j�~npz�npx1�rs}£$z�m1w�wyx>q#s}�&{}x5{��~��{M� s��9z�m>{}z�s�x1wjs��Y��s�u���>s�n�xCz~wy��o#m>{�o���s�x�w${�o�z~��{M�C� S(s�uJtF{�x¹�1�~s�z�wMtaz${��C{�npx1o�zKz~m1npo5�C�¹qCs�npx1�@o�s�v$wyz~m1npx1���np��w

@ AAD C >MÄFD � ����� I � Q\o>:Ä��am&# � ������I � %KL B VÁLÁCÁ> C J B HE` � ������I � w?w BBCEo M

# D ���1¾�� ½�¾�A DDFFD?�AD�%D}Â#��Dm&# B�%c` U ��� VÁLÁCÁ

� ljm1wy��w�! oK{ ��n��\qCn�£�wy��wyxYtaw5�Ywyz< �wywyx +�j o�+({}x>qlf\jEoefL�9­Cu1���>s�o�w ��s�u@m>{�q½�F>Ã��7�?���&# Q\oEo�% V½�F>Ã�� ] �?�����}À���� V

�?������À����a`7�?��� Vz�m1wyx � ��� À����J{�x>q �?���J �s�u1��q7�>s�z�mP�Ys�npxCz\z�s¹z�m�w@§>��o~z$wy�pwyv�wyxCz5npxPz�m�w�{��~��{M�C�­Cu1�1�Ys�o~wr��s�u5 j{�xCz~w:q#z�sKnpx1npz�n�{��pnpo�w�z�m�n�o9o~z���npx1���L�#ve{}�Cn�x��jz�m1w±§>��o~zfwy�pwyv$wFxLz�{ �Fwy��s�L�Cz~w�� S(s�u@tas�u��©q@qCs

�?���Y½:À�BJ&�?�@���}À���� L�f\jEoef M3SE] ¾��7�?���Y½:À�BJ&�?�@���}À���� LvfEf MD] Ss��

] �?�����}À����a` +�j o�+ V

�1u1z�?������À����a` f\jEoef V

 (s�u1��q�q¢sro�s�v$wyz~m1npx1���u1npz�wjqCn�£VwF��wyxCz:� � z� (s�u1��q ta�~w:{�z~w|{±o�z��~npx1�Kn�x���s�u��'wa�1w:tau�z�{�����w´,x>{}v$wy�p�Zf\jEoef�µj{�x>q�o�wyz9�?��� À!���@z�s��>s�npxLz¤z�s�n�zK jnpz�m��>s�z�wyxCz�n�{}���p�@qCnpo�{�o~z��~s�u1oKwa����,w:taz~o:�� l�u���x1npx1�«s�x¹s��1z~npv$npo�{}z�nps�x«v@{M�«t�mY{�x1��w$z�m�w$�Ywym>{M�Cnps�u1�#s��r��s�u1� ����s�����{}v�¡�wyo��Ywa�tan�{��p�p�5n��'z�m�w�����s�����{}v npo�xX! z��>wy� �,w:tazM�(¦�s���npx1o�za{�x>taw�¡1n��'s��1z~npv$npo�{}z�nps�x#��wa�<�Ys�o�npz~n�s�x1oj{��{���n�{}�1�pw�npxCz�sr{±��wy��npo�z�wF�fnpz�! o'�pwyo~o��pnp��wF���¤z�s¤�>w�o¤n�x�n�z~n�{��p�p�L¡~o�s¤n �Y��s�u?! ��w9x1s�z9npx1npz�n�{��pnpo�wMq��{���n�{}�1�pwyo(�Ywa�,s���w u�o�wK��s�uev�np��mCz9��wyzK{ o~u1���1�~n �yw��� ¨ �,u1x>t�z�nps�x�z�m>{}z ��wFz�u1�~x1o${��>s�n�xCz~wy� wynpz�m�wy�$´ É µKza{���wyo5{@�Ys�npxCz�wy�#{�o5{��>{}��{�v�wyz�wF�s��\´<Ì�µ¤u1o�wFo5v@{��p�ps¢t z�s�{}���ps1ty{}z�w#v$wyv�s�����z�s«o~z�s���w$z~m1w$q1{}z�{@npx�s��\´Me�µK�~wyz�u1�~x1o\{�>s�n�xCz~wy�jz�s${�o�za{�z�n�tK��uC£VwF�:�f¨¤ojz�m1w�u1o�wy�¤s��f{��,u1x>taz~nps�x'¡C��s�u$v\u�o�z��Lx�s�   jm1n�t~m@s��z�m1w\z~m1��wyw�npz npo�npx�s��aqCwy�#z�s@u1o�w�z�m1w#�Bu1x>taz~n�s�xXx9z�m�w\ve{�xCu>{}�'�>{}��w$qCwFo�ta�~n���n�x��«z�m1w�,u1x>taz~nps�x$o~m1s�u��©q���n���wr��s�u@z�m1npojnpxC�,s���v@{�z�nps�x'�

e Ê

Page 40: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ���>��� � � � ��� � �

�2D � )�� ) !#92$ /102� 02��%&�'�.,.%C;N,.02� $&�� Å D?�Y½TF>à �@�~wyz�u1�~x1o\{�x�n�xCz~wy��wy�M¡'x�s�z {�½�F>Ã���{}o���s�u�v$np��mCzjwa�1�Yw:tazM� � �rz~m1w\npxLz~wy��wF���{��pu1wr�~wyz�u���x1w:q�npojo�z~s���wMq«npxCz�s\{\t~m>{��a{�taz~wy�K��{���n�{}�1�pw�{�xYq$z~m1wyx�t�s�v$�Y{���wMqe{}�L{}n�x�o�zz�m1w�n�xCz~wy��wy�\tas�x1o�za{�xCz I � ��¡�z�m�wetas�v$�>{}��npo�s�x�v@{M�«x1wy��wy�5o~u>tytawFw:q�¡��>wMty{�u1o~w@o�np��xC�wa�1z�wyx1o~nps�x�s��|{�t�mY{���{�taz�wF� s�x« jn�qCwFx1npx1�$z~senpxCz�wF��wy�Knporv@{�t~m1npx1wa��qCwy�Ywyx>qCwFxLzM�&9 )�-*'/ � ) �(-�� �B- �$CB- N*)j�Ywa�,s���wKu1o�npx1�${ �,u1xYtaz�nps�x��� ­Cu1�1�Ys�o~w5{#�,u�x>taz�nps�x �AD�UAD?� ��D za{���wFo�{\o~z��~n�x��>� � �fz�m1w 587�9 ;¹����s�����{}v$v$wF�({�tyt�n �qCwyxCz�{}���p�\ j�~n�z~wyo� D�UAD?�A�@D J �?��� MN½TF>Ã�� ] �?�@� VÁCÁCÁW

��{�z~m1wy�¤z�m>{}x� D�UAD?�A�@D J �?��� M½TF>Ã�� ] �?�@� VNÁCÁCÁW

z�m1w tas�v$�1np�pwy�fv�n���mCzfx1s�zj j{��~x$z~m1wK�1��s�����{}v$v�wy�fz�mY{�zjz�m�wr�Bs���v@{��1�Y{���{}v$wyz~wy� �?���m>{�oKz�m�w$qCwa� {}u1�pz�z<�C�Yw >MÄ���{}x>q�{��ps1ty{��9��{}��n�{��1�pw�?���«npo ta��wM{�z�wMq� jm1n�t�m�npo�xX! zKnpx1n��z�n�{��pnpo�w:q&��7� x$z�m�wrx1wa�1z�wa�>{�v��1�pw�¡�npzf�psCs��Co({}o(n��'z~m1wr�1�~s�����{�v�v$wy�9v�w:{�xCz9z�s\qCwa§>x�w Ì �>s�n�xCz~wy��oz�s\npxCz�wy��wy��oM� � x$�<{�tazM¡CÀ���� U npo��>wFn�x��$qCwa§>x1wMq«{�or{}xenpxCz�wF��wy�M�>:Ä�� ] À�����QkL À���� UV�7� x 587:9 ; z~m1w«�Bs��p�ps� jn�x��Jtas1qCw� �s�u��©q�ta��{}o�mXx�´ ���� #"%$ qCsCwyo�{}u1z�s�ve{�z~n�t\z<�C�>wtas�xC��wF��o�nps�x>µ

>:Ä��P¿�D�Ã}ÄKJ�Ä�EC¿/QkL\Ä�EC¿ UkM>:Ä��PÄ�EC¿/QkL�Ä�EL¿ UVNÁCÁCÁW

>:Ä��7>XL�Ã}ÄF�\[AD?� VC ÂC¾CÃ�� CKVS ] AAD�Â�> = D?�1à �AD�¿F>��?�1Ã�_FD�� ]ESÃ�Ä��\[AD?�c`7¿�D�Ã�ÄKJ C L�Y MeVÀ!�A>MÄ�� C J\fTg�F�D�¿�D�Ã}Ä�¾ Cah�C Ã}ÄBA h A7>�� h ABj}Ä fkL C LlYL�Ã}ÄF�\[AD?� MIV

�P�,u�x>taz�nps�x1oju1o�uY{��p�p�$��wFzj��np��wyx«{}����u�v$wyxCz�oj�Cn�{�z�m1w o~z�{�t����j�j{��p�pnpx1�K�,u�x>taz�nps�x1or�1u�z��{��pu1wyo s�xJz~m1w$o~z�{�t~�7z�m1wyx7�>wFwy�rz~m1w$oa{�v$w\xCu1v\�Ywy� s}���C�Cz�wyo#s�£� jm1wFxJ��wFz�u1�~x1w:qz�s>¡&o�s@npz�qCsCwyo~xX! z ve{}z�z�wF�rz�sq587:9<;7n ��z�m1w\o~u1�C�,u1xYtaz�nps�x¹qCsCwyo~xX! z�u�o�w\s�� qCwMta��{���w{��p�'z~m1w5{��~��u1v�wyxCz�o¤z�m>{}zrnpzrnpor��np��wyx'� � z�qCsCwyo~xX! z�wF��wyx�ve{}z�z�wF�jn ��n�zKqCw:ta��{}��wyoKv$s���w{�����u1v$wFxLz~o z�mY{�xJ��np��wyx7�L�¹z~m1w«ty{��pnpx1�@�Bu1x>taz~n�s�x·{}o5�ps�x�� {}o5npz\qCsCwyo�xX! z\ j�~n�z~w$z~sz�m1wyo~w\��{��pu1wyoM� �¹wy��w\npzKz�s«qCs@o�sY¡�npzKv$np��mCzj �wy�p�fs���wy�~ j��npz�w\z~m1w\{�q1qC�~wyo�o#z�mY{�zKz�m1wty{��p�pw:q#�Bu1x>taz~n�s�x$o~m1s�u1��q ��wyz~u1��x«z~s>�9­Cu>t~m«{ ����s�����wFv v$np��mCzfx�s�z��>wK��wMtas���x1npo�w:q �,s���u�n�z~w�{� jm1np�pw�¡�{�xYq«npo�x?! zKw:{}o���z�s�z���{�t~� qCs� jx�� ljm1npoKnpo� jm�wy��w�p Â#>MÄ!�k!�´,o~wyw É ®�� É µ�>w:t�s�v$wFoju1o�wa�Bu1�

¯Br

Page 41: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��� � � � ��� � �

�7� �'n�x\s�x1wro~s�u1�atawK§>�pwj��s�u$mY{M��w >MÄ�� Ã��@�1Ã�B&#2Q�oEo�%5{}x>q\��s�u\ j{�xCzfz�s#u1o~wrz�m�n�oj{��~��{M��,��s�v�{�x1s�z�m1wy�Ko~s�u1�ataw#§>�pw�¡���s�u«v\u1o~z�xX! zrqCwMta��{���w${}o9D�m��AD?��Ä >MÄ�� ] Ã����¢Ã�B@�1u1z {}oD�m��AD?��Ä >MÄ�� à ���1Ã�B&#�%���¨rx7wa�1�1��{�x>{}z�nps�x7s��K jmL�¹z~m1npo5npo\o~s tas�v$wyo��,�~s�v ��m1�~npofs��p�Yw ´ U1¾CÂ}À�DL½?����½?� A�Á<ÅAD9Á�½�¾}¿>µ� � ) � �*1 � '�)�. � -�A) >MÄ!�ºÃ ���1Ã�B&# Q\oEo�% V / � ) .�1 ��C � )2A F�)�/ F -�F �'*) F/�1�A�- N*)�+�1 A������ �E/ F�6-T/ F�- ��6-*'*' A) FGF�� ��� M�� � ) .�1�� C � )'A����e1 � F(/ � -�/±Ã����1Ã�B OF�-��a- A2A-��� -��I'��� ) � /6/ A �) F(/t1 N*) �e)2A�-T/�)l.�1�'�)6+�1 Al-��a)��GCEA�)GFGF �1+� � �*)#Ã��@�1Ã�B&#��%��� /8'*1T) F / � )+�1 �� 1 � ���N�����/ /t- ��) F8/ � ) F�/�-�A�/( ��Nl-*'*' A) FGF 1t+&/ � ) - A2A-������ �������8-��I'q-*'�' F(/�1 / � -T/-��Z1��BF�)0/�)� �B- �e/�1 / � )� ��I'*) �!��" �8/( � ) F�/ � ) F $#�)61 +6-+� �E/%�t/��GC �.�- �� �'&�(/�1 N�)0/ -��-*'*' A) FGF 1t+ �EoEo P� ] �B`��7Q U M(��/ � 1T1�� F -T/ / � )� �E/BF/�1�A�)�'�-T/�-*'�'�A�)GFGF)����* -+�I' / � )2A�) F/ � )� �i/ M� � ) � �*1 � N� �\) -���) ��/�)2A �I- �E'*)�. � -�A�-T/( �1��� �� -+�I1T/ � )'A � � ) � ��) D\m@�AD?��Ä7>:Ä�� ] à ���1Ã�B V �/ � ) .�1�� C � )'A&/t- ��) F �*1 ��A � 1 A'"+�1 A / / � -T/rÃ����¢Ã�B OF - Ci1+ �E/�)2A2M+� � ) � �� ��)'A@A�) �F�1 � �\)GF / � ) F� � ��1 ��+�1�A �*1 �Z-�F -���1��-,T).0/ / � -T/ A) F �'*) F8-T/ -�'*'�A�)GFGF������ M/. �*/�F �e.)�*1 � � �)�'&/�1(/ � )(.�1�� C � )'A��K/ � )(.�1 ��C � )'A"/ � � � F6/ � )'A) F8-TCB1� ��E/t)'A �\-�A G-�� � ) F/�1�A�)�'-T/ -�'*'�A�)GFGF'� ��� M � 1 �I1 � � ��� ) � / � )&.�1 ��C � )2A F�)�) F8-��Z) � C7A) FGF G1�� � �*)jÃ����1à B&#��%�� / N�) �I)'A-T/�) F$.�1�'�)+�1 A� / � �*)�/ � F �0��/K/�-��*) F�/ � )6-�'*'�A�)GFGF61 + / � )�Ci1+ �E/�)2A)��� ����� -+�I'�- FGF���� ��N / � )2A�) F -�CB1� �E/�)'A&/ � )2A�)���A)�-*'�F8/ � ) ��- � �B)�1t+&/ � ) CB1� �i/t)'ATF�/�1�A�)' / � )2A�)2M� � )�CB1� �i/t)'A � ��/��GC G.- �� � A) F �'*)�-�/ -*'�'�A) FGF������q/ � A�1 �JN � � ��"JM1� � -T/ FZ-*.0/ � �- �� � ��3/ � )'A) OF �I'�)�/�)'A� ��I-T/�)2M+� � )'A) .1 � � ' ��)�- N*-�A ��-�N�) �\- � �B) F�/t1 A)�' / � )2A�)��F�-��2� 3�4�52M6� � ) .1�� C � )'A N�)0/ F&/ � OF ��- � �B) �7� 3�4�5��6- F(/ � )�-�'*' A) F F�1 +&/ � )6�LAGF�/ �E//t1 � � �. � / � ) CB1� �E/�)'A Ci1+ �E/ F M8��/�/ � ) ��-*'�' F&/ � )�F�.�- � )' �I'*) �Z19�BF�)0/:����* � /�1 / � OF��- � �B)��/�1�N*)�/0� 3�;�;� -+�I'&/ A �) F�/�1�A)�-�'&/ � ) �i/t)DN*)2A�F�/t1 A)�'(-T/�-*'�'�A�)GFGF<��3�;�;� ��� �. �� �� � �*) � ��A) F � �r/' �Z- ���JF )'A2A1 A 1 A F�) N �() �E/�-T/( �1+� � G1 � -�/� G1��$M� � ) / � ��N(/�1 A�)�()� ��)2A&-���1 ��/$- ��k/ � F OF6/ � -�/$) ��) �l/ � 1 �JN � Ã����1Ã�B'# >MÄBAAD�m�%3-��I'À�¾#>MÄ��AD �&# >MÄBA D\m�%8.�-�� ��) �JF�)' �E/�)2A�. � -���N*)�-�� � � � �*1 ��ABF�1 ��A.�)�.�1�'�)��k/ � ) .�1 ��C � )2AN�) �I)'A-T/�) F���)'A�8'+ ��)2A�) �i/,1��-,T).0/ .�1�'�)6'*)DCi) �I'+ ��N 1+� � � )0/ � )2A �*1 � - A) �I'*) �� ��N 1��-��Z- A2A-�� �'*) �E/( � )'A$1 A8- CB1� ��E/t)'A �'*) �E/( � )'A2M

�2D � )�� = ,.02/1/&��$= � � CJC ��NQ;<.�1�'�) � - F�� 1�� - �\)2A�- N*)���1��e) ���JN*CB)2A>��� � �I) FZ1 +Z.�1T'*)'M@? ��1 �*/ � - � +Z1t+/ � ) F�) ���JN F -�A�)�A) � -�/t)�' /�1 � ) �(1�A�l- � � 1T.-�/� G1���-��e'Z'�)- �� 1T.�-T/( �1��!MBA�� ´ {}x1s�xC�Cv$s�u1or�1u�z�Ywy�pn�wF��{��1�pw:µF��¿�ÃCÂCÂC¾�½ J M {��p�ps1ty{�z~wyo(v�wyv$s����5q¢�LxY{�v$n�ty{}�p���C�Yljm1wKo�za{�x>q1{}��q ¿>ÃCÂLÂC¾�½kJ M {}x>qC �AD@DkJ M �Bu1x>taz~n�s�x1oKx1wyw:q�z�s��>w\w HetanpwyxCz�{�xYq�ty{}xX! z�t~m1w:t~��z�m1w#npxCz�wy����npz<�@s��fz�m1w#m1w:{}��s�xwy��wy���«ty{}���<�Tljm1wy��w��,s��~w�¡Yn �9z�m1w�m1w:{�����wyz~o�tas�����u��1z�w:q&¡>o~wywyv�n�x����p�\��{}x>qCs�v �Ywym>{M�Cnps�u1�rty{}xs1tytau1�M�fljm1w¤�,s��p��s� jnpx1�#tas1qCwK (s�xX! zj (s������

½TF>Ã�� ] Ã�Ä��\[AD?� VÀ��A>MÄ!� C J\fTg@B�À�D���¾}¿�D?�*F�>MÄ1Å stj}ÄXf MeVÅAD?�A� JyÃ}Ä��\[ D?� MeVÀ��A>MÄ!� C J\f �¢¾ EH�@B�À�D\Acjef h �*jef\j}Ä fkL@Ã}Ä���[AD?� MeV

ljm1wK�Ys�npxCz�wy�¤��{���n�{}�1�pw�Ã}Ä���[AD?��¡� jm�n©t~m@npojm>{�xYqCw:q�z�s\z~m1wKÅ D?�A�K�,u1xYtaz�nps�x«{}ojz�m1w �ps1ty{}z�nps�xnpxCz�s@ jm1n�t~m¹z�m1w���wyo~�>s�x1o�w@o�m�s�u1��q��Yw\o�z�s���w:q&¡fm>{}o x1s�z��>wywFxJo�wFz5z~s«�>s�npxLzKz~s�{�xC����{��pn�qo�z~s��a{���w�� ljm>{}z$npo:¡± (w¹ty{�x�x1s�z�o�{M�P jm1wy�~w�z~m1w��Ys�npxCz�wF� Ã}Ä��\[AD �¹�Ys�npxCz�oM�¬­¢n�xYtaw��ps1ty{}���{��~n�{��1�pwyo9{���wjx�s�z9npx1npz�n�{��pn �yw:q�¡�{}x>q z<�C�1n�ty{}�p���Ktas�xCza{�npx5�C{��~�>{���w�¡�npz9n�o9x1s�z9wy��wyx#��uY{���{}xCz�wyw:qz�mY{�zrÃ}Ä���[AD?�\o�za{��~z�ojs�u�zr{�or{#xCu1�p���>s�npxLz~wy�:�ljm1wKo�npv$����wFo�z9 |{M�#z�s\tas�����wMtazrz~m1w �u1wyo~z�nps�x¢� {}o��Cnpx1� �1�~s����a{�v npofz~s5u�o�w {K�ps1ty{���{��~��{M�C¡

npx1o�z~w:{�q�s}� {#�Ys�npxCz�wy�M¡>{�xYq\�pwyzjz�m�w5tas�v��1np�pwy�f �s����~�e{}�>s�u1zr{��p�ps1ty{�z~n�s�x'�@ >MÄ�½} EBAAD�C��?���A>MÄ¢Å�ÁGFIH½TF>Ã�� Ã}ÄF�\[AD?�&# Q\oEo�%KL ] À V

¯ É

Page 42: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��� � � � ��� � �

¿>Ã#>MÄ J M NÀ�� >MÄ�� C J�fTg�B�À�D���¾}¿FD?��F�>MĢŠs�j}ÄXf MeVC Å D?�A�kJyÃ�Ä��\[AD?� L Q\o oL �?�EAA>MÄ MeV> C JEJ~Àc`7�?���Y½TF!�JyÃ}Ä���[AD?�KL +�j}Ä�+ MEM � ` � ����� M

] À ` +�jEo�+ VÀ�� >MÄ�� C J�f �1¾ E%��B�À�D�AQjIf h �*jef�j}ÄXfkL@Ã�Ä��\[AD?� MeV

Wªjs�z�w�z�m>{}z9z�m1npo9wa�>{�v��1�pw {}�po�sru�o�wyo C ÅAD?�A�|npx1o~z�w:{�q s}�>ÅAD?� �K´<{��p |{M�Co9{j��sCs1qKn�qCw:{�µy¡�o~sKz�m>{}zz�m�w5o~n �Fw\s��(z~m1w${��~��{M�«ty{�x��Yw\o��Yw:tan�§>w:q¹{}x>q C ÅAD �A�\ jnp�p��x�s�zrs���wy�� j�~npz�w#z�m1w\wyxYq«s}�(z�m1w{��~��{M�@n��(z�m�w5u1o~wy�Kz<�C�>wyo {}x«s���wy�~�p���<�ps�x1�\�pnpx1w�¡Yz~m1s�u1��m«u1xC�Bs���z~u1x>{}z�wy�p���,s��¤z�m1npoKwa�>{�v��1�pw�¡C ÅAD �A�5qCsCwyojx�s�zr{�u�z�s�v@{�z~n©tF{��p�p�5qCwy�pwyz~w z�m1wKz~��{�np�pnpx1�(j�Ä'¡1{}ojÅ D?�A�  �s�u1��q��¨r�pnp��x1v�wyxCz\�1��s��1�pwyv$o@ty{�x {��~npo�w�n ��¿�ÃCÂCÂC¾�½�npo@u1o�w:q tF{���wF��wFo�o��p�C�¥¶9�~s1tawyo�o~s��~o�m>{M��w

qCn�£�wy��wyxCz���u1�pwyoj{��Ys�u�zj´��,s��fnpx1o�za{�x>t�w:µf jm�wyz�m1wF�r{ ÂC¾�Ä1Å5tF{�x$�Ywjo�z~s��~w:q�o�z�{}��z~n�x��5{�z({}x\s1q1qv$wFv$s��~�$�ps1ty{�z~nps�x'� � �|��s�u�z�����z�s@�1�~w:{���z�m�wyo�w\�~u1�pwyo:¡9��s�u1�K�1�~s����a{�v� jnp�p�fta��{}o�m¹��np�Cnpx1��pnpz�z��pwfs��9x1s�ta�pu1w� jmC�L��ljm1w � u � " �$ t~m1np�1o9s�x1�p�K�Ywy��v�n�z9{�A1¾ E = Â#Djz�s¤o�za{���z�{�z�{}x�{�q1qC�~wyo�oqCnp�Cnpo�np�1�pwr�C� n1¡�o�s\z~���Cnpx1�5o~s�v�wyz�m1npx1�#�pnp��w½TF>à � ]?= ÂC¾�½T_ ` JM½TF�Ã�� ]kM ¿�ÃCÂCÂC¾�½ J&��>��AD}¾ C J�A1¾?E = Â#D MEMeVA1¾ E = Â#D�Ac` Q�Á URV

] J�A1¾ E = Â#D ]kM = ÂC¾�½T_>`aA Vnpoj�pn���wy�p�5z~s$ta��{}o�m'�

�2D � )�� ( Sp%1� ! � ��9 @�"�7��m>{}z(�psCs��Coj j�~s�x1�# jnpz�m@z�m1wFo�w �1�~s�����{�v�o��� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> VC ¾�� J&>*`Eo V >*CEQ\o V >*`�>*P7Q MeVÀ�� >MÄ�� C J�f�>H>�� h ABj}ÄXf L > MeV

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��PÄ�EC¿ = D �A�$#2Q\o�% V>:Ä��7> VC ¾ � J&>*`EQ V >*CE`EQ\o V >*P P MÄ�EC¿ = D?�A�$# >�%B`#> V

C ¾ � J&>*`EQ V >*CE`EQ\o V >*P P MÀ��A>MÄ!� C J\fFÄ@EC¿ = D?� �$# h A�%B` h ABj}ÄXf L >XL Ä�EL¿ = D?�A�)# >�% MeV

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> VC ¾�� J&>*`Eo V >*CEQ\o V >*`�>*P7Q M> C J&>*` U M

¯LÌ

Page 43: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��� � � � ��� � �

À��A>MÄ�� C J\f�>H>@� U j}ÄXf MeVD�Â���DÀ��A>MÄ�� C J\f�>H>@� Ä�¾�� U j}ÄXf MIV

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> VC ¾�� J&>*`Eo V >*CEQ\o V >*`�>*P7Q M> C J&>*C U MÀ��A>MÄ!� C J\f h A >�� Â#D�������F�Ã}Ä U j}ÄXfkL�> MeVÀ��A>MÄ!� C J\f�Ã�ÄBA h A >��¹Ä>¾��7D �?E>ÃCÂH�1¾L U D@>?��F�D?�ij}ÄXfkL > MeV

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> V> `co V[�F�>�Â#D J&>aC Q\o MIV> ` >aP Q VÀ��A>MÄ�� C J\f��A>:Ä�>��TF�D�A�Á >>` h ABj�ÄXfkL > MIVW

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> VC ¾�� J&>*`Eo V >*CEQ\o V >*`�>*P7Q M

�\[A>?�Y½�FKJ&> M N

½�Ã#��D>o,s\À��A>:Ä�� C J\f >H>��ao j}ÄXf MeV½�Ã#��D Q?s\À��A>:Ä�� C J\f >H>�� Q�j}ÄXf MeVAAD C à E�Â�� s#À�� >MÄ�� C J�f�>H>��¹¿>¾�� D��*F>Ã}Ä Q\j}ÄXf MeVW

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> VC ¾ � J&>*` o V >*C7Q�o V >*`#>*P7Q MSE] ½TF�DC½T_ ��FFD U¢ÃC E�D·¾ C > ]ES�\[A>?�Y½�FKJ&> M NSE] >��1>ao �½�Ã#�@D oKs À!�A>MÄ�� C J\f�>H>��>oEj�ÄXf MeV

= �AD�Ã�_ VSE] >��1> Q �½�Ã#�@D QXs À!�A>MÄ�� C J\f�>H>�� Q\j�ÄXf MeV

¯Be

Page 44: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ���>��� � � � ��� � �

= �AD�Ã�_ VSE] Ä>¾�[1��FFD^A D C à E> � ½}Ã#��D ]ESAAD C à E>Â�� s5À��A>MÄ�� C J\f�>H>@� ¿�¾��AD���F>Ã}Ä Q\j�ÄXf MeV

WW

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH¿�Ã#>MÄKJ MN>:Ä��7> V>*`� V>*`�>*P UE] >�PEP VÀ�� >MÄ�� C J�f�>H>��JÄ>¾�[ h ABj}Ä fkL > MeV

W

� @ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H>:Ä��P¿>Ã#>MÄKJ MN>:Ä�� ÃL = LF½ V>:Ä�� ] À>¾#>MÄ!�AD?� V½ ` VÀ�¾#>MÄ��AD �Q` �Y½ VS ] AA>�U >\AADP½ = B7>?�A��D� CQ] SÃc`º½ SE] À>¾�>MÄ��AD?� V= `º½ SE] ��D?� = �1¾ ]ESV

À!�A>MÄ�� C J\f�ÃE` h AKL = ` h ABj}Ä fkL@ÃL =?MeVW

� z�m1w¤�,s����ps� jnpx1�5t�s¢q¢w� �s��~�Cojs�x@o�s�v$wrv@{�t~m1npx1wyo��1u1zrt���{�o~m1wyo¤s�x@s�z~m1wy��o#�p���

@ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH�@B�À�D\AAD C �?����EV½?� N

A¢¾ E = Â#D ] À�Ã�� VA¢¾ E = Â#D ] À�¾#� VA¢¾ E = Â#D ] U D� V

W à YC¾#>MÄ�� V¿�Ã#>MÄKJ MNÃEYL¾#>MÄ�� ] YC¾�>MÄ�� VYC¾�>MÄ��c`nJyà YC¾#>MÄ�� ]kM ¿>ÃCÂCÂC¾1½kJ&��>�� D�¾ C Jyà YC¾#>MÄ�� M P �@>��AD�¾ C J�A1¾ E = Â#D MEMeVYC¾�>MÄ��B=EH�À>¾#��` J�A1¾ E = Â#D ]kM J0YC¾#>MÄ�� P7Q MeV] J0YC¾#>MÄ��i=EH}À>¾#� M `co V

W

¯�¯

Page 45: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �\� ���+� � � 8�� �

� � � � 6 �-N���V� �

É � � v$�1�~s���wj��s�u1��À��A>:¿�D�� �1�~s����a{�v o~s\z�m>{}z�¹� zro~z�s��1oKo�w:{}��t~m1npx1���,s��¤�1��npv�wyojnpx«z�m1w���{�x���w�r\z�s Äes�x>taw#n�z¤m>{�o¤ve{}����wMqe{}�p�z�m�w v\u1�pz�np�1�pwyofs}���1�~npv$wyo���� ��¹� z5ty{}x�za{���w${�o5{}x {}����u�v$wyxCz�{ xLu�v\�>wy�¤z�s«o~m1s�  z~m1w\u1�1�Ywy�#�>s�u1x>q�s��jz�m1w�1�~n�v�wyo�z�s\�1�~n�xCzjs�u1zr´Bo�wyw#¨5� É µy�

Ì��j¶9u1z É r¤npxCz�wy��wy��ofnpx5{±§>�pw�¡}s�x1wj�Ywy�f�pnpx1w�� �¹�~npz�wj{r����s�����{}v z�m>{}zf��w:{�qCofz~m1w(xCu1v\�Ywy�~oz�m1wyx@�1�~npxLz~ojz�m1wFn��¤o�u1v�{�xYq${�xYqe{M��wy��{}��w��

e�� �¹��npz�wK{#�1��s�����{}v z�mY{�zrtas�u1xCz�orz~m1w t~m>{��a{�taz~wy��oM¡> �s��aqCor{�xYq$�pnpx1wyojnpx@{�§>�pw��¯Y���jw:{�q#z�m1w É o~z É rKu1n�qCoT�,��s�v S D?�Y½ S À�Ã#���\[EAV¡}o�{M��w¤z�m1wFv npx${�xe{}���a{M�\s��'o�z~��npx1��o|{}x>qo�s��~zjz�m1wFv¥u1o~npx1� �#�}¾������

f���l {}��w5{�o~n�v��1�pwK�1��s�����{}v ´Bz�m1w#¿>ÃCÂCÂL¾�½#wa�>{�v$����w�s�x��>{���w�Ìgq\ jnp�p� q¢sLµK{�x>q��1�~w:{��n�z�u1�@npxCz�s\Ì s��e#o~s�u1�atawK§>�pwyoM�f­CwywKn�����s�uety{}x«tas�v��1np��wjz~m1wyv npxLz~s�{}x$wa�1w:t�u1z�{}�1�pw��l��~�${�q1q¢n�x���?�¢Ã��A>C½�z~s5��{}��n�{�����wr{}x>q#�Bu1x>taz~n�s�xeqCw�§>x1npz�nps�x�o(z~s5o~wyw  jm>{}z|qCn�£�wy��wFx>tawn�z�ve{}��wyoM� �¹�~npz�w { v@{���wa§>�pwj�,s��(npzM�

®�� �¹��npz�wj{K�1�~s����a{�v z�m>{}zf��np��wFx�{±§>�pwyx>{}v$w� jnp���C�1�~s1qCu>tawK{Kx1wy 7§>�pwjwyx>t����C�1z�wMq\u1o~n�x��{�xC�\v$wyz~m1s1q\��s�u@�pn���w���ljm1wyx@ j��npz�w {}x1s�z~m1wy�r����s�����{}v z�s$qCwMta���C�1z±§>�pwyo:�

q�� �¹��npz�w\{��1��s�����{}v�z~s t�s�u1xCz z~m1w\xCu1v\�>wF��s}�| j{M�CoKz�m>{}zkn �u�wywyx1o\ty{�x¹�Yw\�1��{�t�w:qs�x¹{et~m1wFo�o#�>sC{���q� jnpz~m1s�u1z {}xL��Ì$s}�|z~m1wyv��Ywynpx1�@s�x¹z�m�w\o�{�v�w5�~s�  ¡'tas���u�v$x«s��qCn�{���s�x>{��<�

n���+r{�o~m1npx1���|¦�n��~o�zr{#o~s��pu1z�nps�x$z�s\z~m1wK��{�o�zjmY{�o�m@wa�1wy�atanpo�w��

@ >MÄ�½� EiAAD�C#�?� AA>�¾TÁGF H@ >MÄ�½� EiAAD�C#�?� A1Â#> = Á�FIH@ AAD C >MÄFD3g ��� � I�� #"�� I �Eo@ AAD C >MÄFD ��� P�� g � ��� I � ���@ AAD C >MÄFD-I � u g � =7Q

�@B�À�D\AAD C �?����EV½?� N½�F>Ã��7�?���&# ��� P�� g � ����I � % V>:Ä�� U1ÃC E�D V

W I�Ä!����B V½�F>Ã��7�?���&# ��� P�� g � ����I � % VS ] $ �AD�Ã��AD·Ã}Ä�Ã��@�1Ã�B ¾ C D�Â#DM¿FDMÄ��A�J¾ C ��B�ÀFD I�Ä�����B ] SI�Ä�����B1�1à = Â#D$# g ��� ��I�� �"�� I�% V>:Ä��PÀ��1¾�½�D@���kJM½TF�Ã�� ] �?��� M N>MÄ!� U1ÃCÂa` Q V[�FF>�Â#D J ] �?�@� M N

U1ÃCÂa` U¢ÃC ] J ] �?��� MIV�?���BP P V

W�AD ��E���Ä U1ÃC V

W

¯Bf

Page 46: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �\� ���+� � � 8�� �

½�F>Ã�� ] ÅAD?���#� ���A>MÄ1ÅRJM½TF>Ã��1�?���'#(% MNÀ!�A>MÄ�� C J\f " ÄCÀ@E��PÃ7�?���A>:Ä1ÅBj}ÄXf MeV� D?��E���Ä ÅAD �A�kJ&�?�@� MeV

W

>:Ä�� F>Ã#�TF C ÄKJM½TF>à � ] � ��� M N>MÄ!� �1¾��¢ÃC `Qo V>MÄ!� > V[�FF>�Â#D J&>a` ] � ���BPEP M

�1¾��¢ÃC PE`7> V�AD ��E���Ä �1¾��¢ÃC h g ��� ��I�� #"�� I V

W

U¢¾#>\A7��D?��� �1à = Â#D��JU1ÃC EFD��eJ U1¾#>\A M NS ] �@D?� ÃCÂC �*F�D U1ÃC E�D%DMÄ����A>@D��1>MÄ ��F�D��1à = Â�D��¢¾ I � u g �

J�F�D?�AD�[AD·Ã#��� EC¿�D���F>Ã��1��FFD À!�1¾�½�D��@�kJ M �1¾?E��A>MÄ�D A1¾#D��MÄ + �À��1¾�A�EV½�D�=7Q M

] S>:Ä��7> VC ¾ � J&>>`Eo V >*C�g ��� ��I�� #" � I V >�PEP M

�1Ã = Â#D$# >�%(Á U1ÃCÂ EFD*` I � u g � VW

>:Ä�� C >MÄBA���DMÄ�����BRJM½TF>Ã�� ] �?�@�KL >MÄ�� = E�½T_FD?� M N> C J �1à = Â#D$# = E�½T_�D?��%�Á U¢ÃC E�DZ`E` I � u g � M N�?���>½MÀ�BJ �¢Ã = Â#D$# = EY½�_�D?��%fÁ �?��� L �?�@� MeV�1à = Â#D$# = EV½T_�D?��%(Á UCÃL E�DZ` À!�1¾�½�D��@�kJ&�?��� MeV

WD}Â#��D N> C J&�?�@�Y½M¿CÀKJ �1à = Â#D)# = E�½ _�D?��%(Á �?�@�KL � ��� MEM N= E�½�_�D?�a` J = E�½T_FD?�aP7Q M h g ��� ��I�� #"�� I V�AD?� E���Ä C >:ÄBA��#DMÄ!����BJ&� ���KL = E�½T_�D � MeV

WW

� D?��E���Ä �1à = Â#D$# = E�½T_�D?��%�Á U1Ã� E�D VW

¿�Ã#>MÄKJ M N>:Ä�� = E�½T_�D � V>:Ä�� U1ÃC V

��D?�����¢Ã = Â#D � U1ÃC E�D@�kJ MeVS ] �F��DJÅAD?���#� ���A>MÄ1Å%�ADMÀ�D�à �AD\A1Â�B(Á �1¾��7D�Ã�½�F � ���A>MÄ1Å s�=

E���DH�*F�D3F>Ã#�TF C ECÄV½?�A>�¾}Ä �1¾ C >MÄBA1��F�D1�?�@�A>MÄ1ÅB+ �HDMÄ����@B>MÄ7��FFD��¢Ã = Â#D9Á

] S[�F�>�Â#D JaÅAD?�����?���A>MÄ¢ÅJ&�?� � MEM N> C J � �?���Y½M¿LÀKJ&�?��� LTf�DMÄBA f MEM NÀ�� >MÄ�� C J�f u �1¾�Å@�1Ã}¿ DMÄBAAD\Aij}ÄXf MeVD\m >?�J o MIV

¯L®

Page 47: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �\� ���+� � � 8�� �

W

= E�½�_�D?�a` F>Ã#�TF C ÄKJ&�?��� MeVU1ÃCÂa` C >MÄBA���DMÄ�����BRJ&�?���KL = E�½�_�D?� MeVÀ��A>:Ä�� C J\f �1ÃC E�D ¾ C C h ��H >@� h ABj�ÄXfkL �?�@�KL�U1ÃC MeV

WW

¨rx1s�z�m1wy�#{��1�1�~sL{�t�m�z�s�tas��p�pnpo�nps�x1o¤npor�Bs��Kw:{�t~m¹wyxCz~����n�x�z�m�w\m>{�o~m¹z�{�����w#z�s@�Yw\z�m1w�>wy��npx1x1npx1� s}��{ �pnpx1��wMq#��npo~zfs��'npz�wFv$ofz~m>{�z��1��s1qCuYtawKz�m1wKo�{}v$wjm>{}o�m �,u1x>taz~nps�x\��{��pu1w��¦'np�~o�z' �wfx1wFw:q z~sr{��pz�wF�'z�m�w I�Ä����@Bjo~z��~u>taz�u���wjo�s¤z�m>{}z'npz'npx>t���uYqCwyo'�Ys�npxCz�wF�'z�sK{�x1s�z�m1wF�I�Ä�����B���ljm1wy�~w*! o�{Ko~��np��mLzjtas�v$�1�pn�ty{�z~nps�x m1wF��w npx\z�mY{�z� (w ty{}xX! z|qCw�§>x1w { �Ys�npxCz�wF�(z~so�s�v�wyz�m�n�x��j jm1n�t�m�n�o~xX! z�qCw�§>x1w:q���wyzM¡�o�s¤ (wTn�xCz~��s1qCu>tawj{"/�- N �I- �()&z�srz~m1w�o�z��~u>taz~u1��w���@B�À�D\AAD C �?����EV½?� �#DMÄ����@B N>MÄ�� U1ÃC EFD V�?����E�½ � �#DMÄ��@��B ] Ä�D\m�� V½TF>Ã��7�?���'# U o�% VW I�Ä!����B Vªjwy ºwyxCz��~�eo~z��~u>taz�u���wyo ty{}xe�Yw ��wyx1wy�a{�z�wMq@u1o�npx1�\z~m1w¤�,s��p�ps� jnpx1�K��s�u1z�npx1w��I�Ä�����B ] ½?� D�Ã��AD �LÃ}Ä��#DMÄ!����BRJGU1¾#>�A M NI�Ä�����B ] DMÄ!����B VDMÄ!����Bc`nJGI�Ä�����B ] M ¿>ÃCÂCÂL¾�½kJ&��>��AD�¾ C JGI�Ä��@��B MEMeV�AD ��E���Ä DMÄ��@��B V

W

C >MÄBA DMÄ!����B#x1wyw:qCoKz~s5�Yw ��w��  j�~n�z~z�wyx��>:Ä�� C >MÄBA���DMÄ�����BRJGI�Ä����@B ]E] DMÄ!����BKL�½�F>Ã�� ] �?��� M N> C J ] DMÄ��@��Ba`E` � ����� M N

] DMÄ����@BQ` ½ �AD�Ã��AD��CÃ}Ä��#D:Ä�����BJ M V��D?���#D:Ä�����BJ ] DMÄ����@BKL � ��� MeV�AD?��E���Ä J ] DMÄ����@B M =EHJU¢ÃC E�D V

WD�Â#��D N> C JEJ ] DMÄ!����B M = H U1ÃCÂ?E�D � ` I � u g � M N> C J � �?���Y½M¿LÀ JEJ ] D:Ä�����B M =EH#�?��� L �?��� M M NÀ�� >MÄ�� C J�f �1ÃC EFD&E�D C ¾�� C h �*H�ÃC �AD�Ã�A�B ½�ÃCÂ�½&E�ÂCÃ��AD\Aij}ÄXfkL � ��� MIV�AD ��E���Ä J ] DMÄ����@B M =EH U1ÃC E�D V

WD�Â#��D NÀ�� >MÄ�� C J�fTg�F�D?� D + ��à ½}¾CÂCÂ#>��@>�¾}Ä�s�C h �*H�Ã}ÄBAcC h ��H ��F>Ã��AD*j�ÄXfkL

J ] D:Ä�����B M =EH#�?��� L �?��� MIVÀ�� >MÄ�� C J�f&��F�D���Ã}¿�D3F>Ã��TF C Ä U1ÃCÂ?E�D&E�D*j�ÄXf MeVC >:ÄBA��#DMÄ!����BJ �RJEJ ] DyÄ�����B M =EH�Ä�D\m � M L �?� � MeV

WWD�Â#��D NÀ��A>MÄ�� C J\f\C h �*H >��·Ã ÄFD\[7�?���A>MÄ¢ÅBj}ÄXfkL��?��� MeV��D?���#D:Ä�����BJ J ] DMÄ��@��B M L �?��� MIV

¯Bq

Page 48: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� � �.� � � � ��� � � � � ���

�AD?��E���Ä J ] DMÄ����@B M =EHJU¢ÃC E�D VW

WWljm1wKn�x�n�z~n�{��Yz�{�����w ty{}x@x1s� ��YwS ] $ �AD�Ã��AD·Ã}Ä�Ã��@�1Ã�B ¾ C D�Â#DM¿FDMÄ��A�J¾ C ��B�ÀFD I�Ä�����B ] SI�Ä�����B ] �1à = Â#D$# g ��� ��I�� #" � I�% Vljm1wyo�w�wyxCz���npwyo¤x1wyw:q z�s#�>w npx1npz~n©{}�pn�o~w:q#z�s � �������ªjs� � j�~n�z~w5{��1��s�����{}v  jnpz�m@z�m�wr�Bs��p�ps� jn�x��K¿>Ã�>MÄ$�~s�u1z~n�x�w�z~s\z�wyo~z�{}���Yz�m�n�ojs�u1z:�¿�Ã#>MÄKJ M N>:Ä�� = E�½T_�D � V>:Ä�� U1ÃC E�D V

��D?�����¢Ã = Â#D � U1ÃC E�D@�kJ MeVS ] �F��DJÅAD?���#� ���A>MÄ1Å%�ADMÀ�D�à �AD\A1Â�B(Á �1¾��7D�Ã�½�F � ���A>MÄ1Å s�=

E���DH�*F�D3F>Ã#�TF C ECÄV½?�A>�¾}Ä �1¾ C >MÄBA1��F�D1�?�@�A>MÄ1ÅB+ �HDMÄ����@B>MÄ7��FFD��¢Ã = Â#D9Á

] S[�F�>�Â#D JaÅAD?�����?���A>MÄ¢ÅJ&�?� � MEM N> C J � �?���Y½M¿LÀKJ&�?��� LTf�DMÄBA f MEM NÀ�� >MÄ�� C J�f u �1¾�Å@�1Ã}¿ DMÄBAAD\Aij}ÄXf MeVD\m >?�J o MIV

W

= E�½�_�D?�a` F>Ã#�TF C ÄKJ&�?��� MeVU1ÃCÂ?E�D>` C >MÄBA��#D:Ä�����BJ �J �1à = Â#D$# = E�½T_�D ��% M L �?��� MeVÀ��A>:Ä�� C J\f �1ÃC E�D E�D¹¾ C C h �*H >�� h ABj}Ä fkL �?��� L�U1ÃC EFD MeV

WW

ljm1npoj�1��s�����{}v¥tas�u1��q$�Yw¤�,u1�~z�m1wy�¤wy��{��Ys��a{�z�wMq� ¨jz�z�m1w¤v$s�v�wyxCz:¡Mn���{Ko�z~��npx1�#npof�ps�x1� wFx1s�u1��m$npzf jnp�p�1�Ywrz�sCs#�1np�K�,s��fz�m1wK{��~��{M�C���m>{}x1��wKz�m�w I�Ä�����B$qCwa§>x1npz~n�s�x@z�s>� ���B�ÀFD\AAD C � ����E�½?� �#D:Ä�����B N>MÄ!� U¢ÃC V�?�@��E�½?� ��DMÄ�����B ] D:Ä�����B V½TF�Ã�� ] �?��� VW I�Ä�����B V{�xYq t~m>{�x1��wfz�m�w(tas1qCw�o�sjz�mY{�z�t�s����~w:taz~����o�n �yw:q�o��>{�taw9�,s��'w:{�t~m o�z~��npx1�rnpo'ta�~w:{�z~w:qu1o~n�x��#¿�ÃCÂCÂC¾�½¢�� ¨�m>{}o�m �,u1x>taz~nps�x\o�m�s�u1��q#�Yw �u1n�t~�5z~s5ty{���tau��©{}z�wr{}x>q#�1��s��Cn�qCwr{}x\wy��wyx�o��1�~w:{�qs��j��{��pu1wFo�z~s«v$npx1npv\n �yw5tas����pnpo�nps�x1o:�#¨�q�q«o~s�v$w\qCn�{���x1s�o~z�n�taoKz�s@z~m1w$�1�~s�����{�v{�xYq$npv��1��s���wjz�m1wKm>{}o�m��,u1x>t�z�nps�x'�

� � � � 6���-�� /L� 6 2 ;���-����

ljm1w � +jwy�p�«¶9{���w��rnpx$z�m�w5�j» �f¼ m1wy�p�$o~�Co�z�wFv��Km>{}oj�pn�x��Lo�z�s\v@{�xC�#u1o�wa�Bu1�'�~wyo�s�u1��tawFor�������� � ������������� � ������� ����� � �!��� "�#������$%&�'�(�$)�*$+������"����!��,-��./� ���(�0$1 ����� � ������������� � ������� ����� � �!��� "�#������$%&�����*$%�2�� �3���4$

¯Bn

Page 49: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

� �jw:{�q\z�m�w5¦1�~w��u1wyxCz��p��¨ro���w:q �¤u1wyo~z�nps�x�o� K§>�pwKn���x1s�z�m1npx1�#wy�po�w��� ljm1wrtas�v��'� ��{�x1�Y� t�x1wF jo����~s�u1��npo�npxC�Bs���v@{�z~n���w��Yljm1wr¨Kªr­ � ���r{�z~nps�x>{}��w��(npo({ É rgr���>{���w ¼ � §Y��wKwau�o�z�n��,�Cnpx1�\{�x>q�qCwyoata��np�1npx1��¨�ªr­ � �� ljm1w ­Cz<�C��w��Ku�n©q¢w��KqCwyo�t���np�>wFo�o~s�v�wru1o~wa�,u1�9tas�xC��wFxLz~nps�x1o� ³�sCs��\npx6wau1o~zr{��Ys�u1zj{�xC�\�Bz��«{��at�m�n���w¤�,s���o�s�u1��taw#tas1qCw��ljm1w tas1qCw {�z�mLz~z��'� lgl �,z~�'� �,u1x1wyzM� § l �1u�� l ��{�x���u>{}��wyo l � l ¶ u1�1�pnp�5m>{}o(�~s�u1z~npx1wyojz�s\v@{M�x1np�1u1��{�z~wro�wFz�o:¡Yo~z�{�t~�Co:¡�wyz�t}�� x«�,z~�'� lLl sL{���� sL{}�C��{�xYq�� w:qCu l ­Cnpv5l9wy� l v#o�q¢s�o l t¤��s�u?! �p�&§>x>q�{\�1np�\§Y��w#s��jtas1qCw\o�x1np�C��>wyz~o ´<tau1���~wyxCz��p�@��wy�~o�nps�x �MÄ�>MÀ d��7Q\oTÁ��A>MÀ>µ9tas���wy�~npx1�\v$s�o�z�o�u1�*wawMtaz�oM�� ljm1w�³��Coa{�z�s��$�pnpo�z\s}������wFo�s�u���tawyo�¹npo${�x�wa�>tawy�p�pwyxCzetas����pw:t�z�nps�xPs��\qCs1tau1v$wFxLza{��~�ve{�z~wy��n�{}� �

" ��� ;92;: <��V�

� � � � � % ��� � ��� � %���� � � � �

S�I���b=HDaDU c�R4[�a?S(V12��f0 S�I���b=HDaDU c�R4[�aDb�S �92���0]�N�����S(R R���V��DR���V�� J4K��DR ��J=I ��U KDU�J4a W�KDV=`M[���U���I�S�� ��V=`�`�J=IDa b�S�I�U N�]S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*��S�ID[MS��

\DK?S�ID[�W1)������U J4K��4H�`�U=ID[DR{J4KDU��=I���.�J4K���?*��WDV4K )�S�d ���eS(c�J4K�����_S E�E *

\DK?S�ID[�W1)���^�a{^DR��=I���.�S .�J4K�� � +�S�-�*��U �?S�[ ) �?*��

� � � ���!�#"%$�&�' Q)( ��% ��� � � � +* �$� ��% ��� �, � � �� � �

S�I���b=HDaDU c�R4[�a?S(V12��f0 S�I���b=HDaDU c�R4[�aDb�S �92���0 S�I���b=HDaDU c4[?S�`�U12���0N ��V=`�\�S(b�U V=I.-�/DR H�R�S�I� ��0�13/�2�3�-�/���4�3�5�6��87�9�: /�V W?S(b�U=I�J=`�UyW?S(b�U=I�J=`�U12 �{N�]

aDU4W?S�I�U�;���< ���

S�ID[ ��V=`�\�) ��V=I�R4[ � V�S�a N�J1. ��V=I�R4[ � V�S�a N�� *�

KDU4[4HDK4I N )�S�ID[ N?*�J3/ NG)�S�ID[ N?* �=�

S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*�

S�ID[ I�H�`���U4KDR1+>;���<D-��S�ID[ S��

R4KDJ=IDa�?�0 )�)�b�VYI��*�[?S�`�U )>;��A@�@?*4*��

\DK?S�ID[�W1)����=I��4I�R(V4K�[�U4auI�H�`���U4KDR J4KDU1r"/��=I���*��WDV4K )�S�d ���eS(cB;���<=�yS E�E *��

C ����� � ������������� � ������� ����� � �!��� "�#������$%&�'�(�$)�*$+������"����!��,-��.��D���,� �FE-, � �3�(� $G ����� � ������������� � ������� ����� � �!��� "�#������$%&�'�(�$)�*$+������"����!��,-��.��DIHKJ�L ./� M�N�OP ����� � ������������� � ������� ����� � �!��� "�#������$%&�'�(�$)�*$+������"����!��,-��.��!. , ��Q!$+��� M�N�OR ����� � ��������� � $SQ3,�!�>TE�� $UO%" � , �����'�VO%��M��XW�� ����� $

¯ Ê

Page 50: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

I�H�`���U4KDR1+�S -�d ��� � � N3a�KDJ=IDa�?�0 )�*��\DK?S�ID[�W1)���^(a�r6^��4a��=I���._S .�I�H�`���U4KDR1+�S�-?*��

]�N 5�U�U [���U��DR�V4K�[ `�J=I \�J��DU WDV4KMJ=I U �4\�b�J=I�J4[?S�V=I V4W3[���U WDV�b�b�V��?S�I� N�]�DR�V4K�[1)�) � V�S�a�N?*�I�H�`���U4KDR1. )�R�S�TDU�34[�*�;���<9._R�S�TDU�V4W1)�S�ID[�*�. ��V=`�\ *��

\DK?S�ID[�W1)����=I 54V4K([DU4ayI�H�`���U4KDR J4KDU1r"/��=I���* �

WDV4K )�S�d ���eS(cB;���<=�yS E�E *\DK?S�ID[�W1)���^(a�r%^��4a��YI���._S .PI�H�`���U4KDR1+�S�-�*��

U �?S�[1) �?*��

�l� � % ������� � �, �'� ���� %����% �

ljm1w tas�v$ve{}x>qCofu�o�w:q��B��s�v�z�m1w tas�v$ve{}x>q���npx1w ty{}x@�>w ty{}���pw:q �,�~s�v¥�K� S�I���b=HDaDU c�R4[�a?S(V12��f0 S�I���b=HDaDU c�R4[�aDb�S �92���0

S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*����� @�: N=\�V=\�U=I�)�*����� @�: N4W4\=�����J4K R4[�K?S�I��+���4-��]�N � S�KDR4[ H�R�U [���U R4LDR4[DU=`�)�* ��J�b�b12�6=HD[4\�HD[B�?S(b�b �DV [DV3R4[�aDV=HD[�2�N�]R4LDR4[DU=`�)���aDJ�[DU��4*��

]�N ;DV��� ��J=\D[4HDKDU j[���U V=HD[4\�HD[ V4W3aDJ4[DU H�R�S�I� \�V=\�U=I�)�*uN�]W4\ d \�V=\�U=I�)���aDJ4[<U���.V��K��4*��S�WQ)"W4\Md�d ;�� @�@?*W4\DK?S�ID[�W1)�R4[�a�U4K(K�.�9�J=I4I�V�[ K4H�I aDJ4[DU��=I���*��

U�b�R�U��W��DU4[DR )�R4[�K?S�I���.���1._W4\ *��\DK?S�ID[�W1)������UyaDJ4[DU ��V=`�`�J=IDa KDU4[4HDK4I�R,+%^DR4-��=I���.PR4[�K?S�I��*��\���b�V�R�U )"W4\ *��

� � � ��� ���$� � � � �

ljm1w��,s��p�ps� jnpx1� �1�~s�����{�v�t���w:{}z�wyo5{#o~npx1���p�@�pn�x���w:q��pnpo�z:�¤¶'s�npxLz~wy��o {}��w#ve{�npxCz�{}npx1w:q#z�s�z�m1wm1w:{�q@{�x>q�z�{}np��s���z~m1wK�pn�o~z:�

S�I���b=HDaDU c�R4[�a?S(V12��f0

[�L4\�U4aDU4W R4[�K4H��4[ 3�b�S(R4[�3�S�[DU=` �S�ID[ � J�b��R4[�K4H��4[ 3�b�S(R4[�3�S�[<U=` N=I�U ��[I�

3b�S(R4[�3�S�[DU=`=�

]�N \DKDV4[DV4[�L4\�U(R N�]b�S(R4[�3�S�[DU=` N�J4a�a�3�b�S(R4[�3fS�[DUY`�)gb�S(R=[�3�S�[DUY` N�U=ID[�K�L�._S�ID[ � J�b=H�U?*��� V�S�a \DK?S�ID[�3�b�S(R4[�3�S [DU=`DR ) � V�S a�*��

b�S(R4[�3�S�[DU=` N���U�J4a�d�;�� @�@ �b�S(R4[�3�S�[DU=` N4[DJ�S(b4d�;�� @�@ �

fLr

Page 51: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

���9F0:!

��02%&/

(F02/ (F02/��9FK5� ��9BK5� � �����

� b

� � /� G- �� �

��9F0:!

��02%1/

� �����

� �����

��9F0:!

�602%1/

(F02/��9FK5� � �����

?K+0/t)'A'� �1Ã#>�ÂE`LÃ�AEA Â#>��?� > �ADM¿KJ � MeV

?K+0/t)'A'� �1Ã#>�ÂE`LÃ�AEA Â#>��?� > �ADM¿KJ b MeV

¦�np��u���w Ì1�f³&n�x���w:q�³�npo�z

`�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*�[DJ�S(b4dDJ4a�a�3�b�S(R4[�3�S [DU=`1)"[DJfS(b .��?*��[DJ�S(b4dDJ4a�a�3�b�S(R4[�3�S [DU=`1)"[DJfS(b .��?*��[DJ�S(b4dDJ4a�a�3�b�S(R4[�3�S [DU=`1)"[DJfS(b .�?*��

\DK?S�ID[�3�b�S(R4[83�S�[�U=`fR )�*��

b�S(R4[�3�S�[DU=` N�J4a�a�3�b�S(R4[�3fS�[DUY`�)gb�S(R=[�3�S�[DUY` N�U=ID[�K�L�._S�ID[ � J�b=H�U?*�b�S(R4[�3�S�[DU=` N=I�U���3�b�S(R4[�3�S�[DU�`=�

I�U���3�b�S(R4[�3�S [DU=`�d1)gb�S(R=[�3�S�[DU�`�N?* `�J(b�b�V�� )"R�S�T<U�V4W )�b�S(R4[�3�S�[DU=` *�*��S�WQ)�U=ID[�K�L�d�d�;���@�@D*����U�J4a�d4I�U���3�b�S�R4[83�S�[�U=`=�\DK?S�ID[�W1)�� � S�K�R4[ b�S(R4[�3�S�[DU=`3S�I b�S(R4[��=I���*��

U�b�R�U �U=ID[�K�LD/�0=I�U ��[ d I�U���3�b�S(R4[�3�S�[DU�`=�\DK?S�ID[�W1)�����a�a�S�I � ^�a3[DV b�S(R4[�2�@�J�R4[ � J�b=H�U �DJ�R ^�a �=I���. � J�b=H�U1.%U=I�[�K�L</�0 � J�bD*��

f É

Page 52: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

I�U���3�b�S(R4[�3�S [DU=`D/�0 � J�b d � J�b=H�U��I�U���3�b�S(R4[�3�S [DU=`D/�0�I�U �4[ d ;�� @�@��KDU4[4HDK4I I�U���3�b�S(R4[83�S�[�U=`=�

� V�S�a \DK?S�ID[�3�b�S(R4[�3�S [DU=`DR ) � V�S a�*�b�S(R4[�3�S�[DU=` N=\D[�K�34[DV�3�b�S(R=[�3�S�[DUY`=�

WDV4KQ)%\D[�K�34[DV�3�bfS(R�[�3�S�[DU=`�d ��U�J4aI��\D[�K�34[�V�3�b�S(R4[�3�S [DU=` 7d ;�� @�@��\D[�K�34[DV�3�b�S�R4[�3fS�[<U=`Dd=\D[(K�34[�V�34b�S(R�[�3�S�[DU�`�/�0YI�U���[�* �

\DK?S�ID[�W1)����DJ�bYH�U S(R ^�a �=I���. \D[�K�34[DV�3�b�SYR4[�3fS�[<U=`�/40 � J�b?* �

� � � ���!� � ���� ��'� � ��� � ��$%+� �� %+� ��% ��� S�I���b=HDaDU ��R4[�a?S(V12�� �����J4K N��DV4K�aDR1+%-�d�� ��J�\�\�b4U���.V� �fU�b4[���.X� ��V=K4\4H�R���.��a�J4W(WDV4a�S(b ��.� U=\�S �4L ��b�U ��.V��WDb(V=\�\�L���.

� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.� �Db�J=IDaDR���.� ��J=I�aDb�U4R���.�4S�ID[<U4K�W�U4K�U���.X���=H4`��fb�U��?.���?S ������.V��b�H�R4[�S�IDU�R�R���.

��`�J=I�Db�U��DV4K�R�U(b���.V��IfU4WDJ=K?S(VYH�R���.��V�b(U�J=I��DU4V=H�R���.� \�J�KDR�S�`�VYI�S(V�H�R��?.>;�� @�@� ��

� V�S�a R�b�V��1) � V�S�a�*�S�ID[MS .��1. ��V=H�ID[�d � �WDV4K )�S�d ��� �DV4K�aDR1+�S�- 7d ;�� @�@ �yS�d?S E ��*

WDV4K )�4d ���� c4dMR4[�KDb�U=I�) �DV4K(aDR1+ S�-?* ���4d�� E ��*S�W1) �DV4K�aDR +�S�-1+��4-{d�d �DV4K�aDR1+�S�-1+�� E ��-�*��V=H�ID[�d ��V=H�ID[ E ���

\DK?S�ID[�W1)�� �4V=H(ID[ ^�a��=I���. ��V=H�I<[�*��

� V�S�a WDJ�R4[1) � V�S�a�*�KDU��?S(R4[DU4K ����J4K N�N��=\�\=��]�N �=\�\ S(R J=I J4K�KDJ4L V4W \�V�S�ID[DU4KDR [DV ����J4KDR N�]KDU��?S(R4[DU4K ����J4K N��=\=�KDU��?S(R4[DU4K3S�ID[ ��V=H�ID[�d ���

WDV4K ) �=\�\Dd �DV4K�aDR���N��=\�\+� �=\�\ E�E * ]�N3b�V�V=\ [��DKDV=H��� �DV4K�aDR12 ����U W?S�I�J�b;�� @�@ \�V�S�ID[DU4K [DU4K4`�S�I�J4[DU�Ru[���U3b�V�V=\ N�]

WDV4K ) �=\ dMN��=\�\ �uN��=\ � �=\ E�E * ]�N3b�V�V=\ [��DKDV=H��� b�U4[�[DU4KDR V4W J��DV4K�a�2����U W?S�I�J�b � � �[DU4K4`�S�I�J4[�U�Ru[���U3b�V�V=\ N�]

S�W1)�N��=\ d�d N ) �=\ E ��*�*��V=H�ID[ E�E �

\DK?S�ID[�W1)�� �4V=H(ID[ ^�a��=I���. ��V=H�I<[�*��

]�N���V=H�ID[ [���U I�H�`���U4K V4W3aDV=H���b�U b�U4[�[DU4KDR1.jW?S�KDR4[ H�R�S�I� J4K�KDJ4LDR1.P[���U=I \�V�S�ID[DU4KDR N�]

f�Ì

Page 53: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

� V�S�a `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*��R�b�V��1)�*��WDJ�R4[1)�*��

� � ��% �%�� � ��$�ljm1w#�1��s����a{�v���wM{�qCoK�B��s�v �?�EAA>MÄ {�x �! �$#"�" §>�pw�tas�xCz�{�npx1npx1�\��{}�pu1wyoKs��|{ ��{��~n©{}�1�pw �¤�,s��npxCz�wy����{��9��{}��u�wyoKs��7� �~u1x1x1npx1���,�~s�v r�z�s � �B�# jm1wy�~w �$npoKz�m�w\xLu�v\�>wy�¤s��(��{}�pu1wyoKnpx«z�m1w§>�pw��9ljm1wF��wKve{M� �YwKo�wy��wy��{}����{��pu1wyo�s�x�w:{�t~m@�pnpx1w���ljm1wr�1�~s�����{�v�s�u1z~�1u1z�o�z�m�w��� �j�>{}n��~o:¡s�x�w �>{�np�j�Ywy�r�pnpx1w�¡�z�m1w �K��{��pu1wyojoaty{��pw:q«{}x>q�z��a{�x1o~�©{}z�w:q �L� � {�t�z�s��~or�1u�n��pzjnpxCz�s\z~m1w ve{}npx��s�u1z�npx1w���� S�I���b=HDaDU c�R4[�a?S(V12��f0 S�I���b=HDaDU c�R4[�aDb�S �92���0

S�ID[ J=I�R��DU4KI�WDb�V�J4[ V4W�WDR�U4[I�WDb�V�J4[ R���J�b�U������J4K ��HDW�+���� � 5 ��� -I�S�ID[����V�V4K�a d �������J4K N��=\D[�KI�

S�ID[ [�KDJ=I�R4WDV4K4`�)�S�ID[ J?*�KDU4[4HDK4I J N3R���J�b�U E V4W�WDR�U4[ E �12����

����J4KDN U�J4[�3�R=\�J���U ) ����J=K N��=\D[�K�*��]�N�����S(RB����S(b�U b�V�V=\ R �?S�\�R [DV [���U I�V=I�R=\�J���U J4W�[DU4K R=\�J���U�R12

� W [���S(R3S(R [���U U=IDaMV4W [���U3b�S�I�U1.nKDU4[4HDK4I ;�� @�@�����S(b�U J3R=\�J���U1.�DU�U=\ �DV�S�I�

N�]

����S(b�U )�N��=\D[�K d�d �*��S�W )�N��=\D[�K d�d � � �*

KDU4[4HDK4I ;�� @�@��U�b�R�U�=\D[�K E�E �

KDU4[4HDK4I �=\D[�KI�

����J4K N I�U ��[�3=I�U ��[�3�I�H�`1) ���DJ4K N��=\D[�K�*��]�N�����S(RB����S(b�U b�V�V=\ R �?S�\�R [DV [���U ��R4[ R=\�J���U J4W�[DU4K J I�H�`���U4K�2

� W [���S(R3S(R [���U U=IDaMV4W [���U3b�S�I�U1.nKDU4[4HDK4I ;�� @�@�����S(b�U ;�6��MJ3R=\�J���U1. �DU�U=\ �DV�S�I�

N�]����S(b�U )�N��=\D[�K 7d �*��S�W )�N��=\D[�K d�d � � �*

KDU4[4HDK4I ;�� @�@��U�b�R�U�=\D[�K E�E �

]�N ;DV�� `�V � U [DV [���U3R4[DJ4K�[ V4W [���U I�U ��[ I�H�`���U4K N�]KDU4[4HDK4I U�J4[�3�R=\�J���U ) �=\D[4K�* �

fLe

Page 54: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&�Y� ��� �v� � ��

S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*�

V4W�WDR�U4[ d 12����R���J�b�U d �12����

����S(b�U )���*��]�N S�W �DU ��J � U=I�[ KDU�J�����U4a [���U U=IDaMV4W3[���U W?S(b�U 2�2�2"N�]S�W1)"W��DU4[DR ) ��H<W�. ��� � 5 ��� ."R4[�aDS�I * 7d ;�� @�@?*��]�NMS�I�S�[?S(J�b�S(R4U �=\D[�K [DV \�V�S�ID[ [DV [���U W?S�KDR4[ I�H�`���U4K 2�2�2"N�]�=\D[�K dMU�J4[�3�R=\�J���U ) ��HDW?*��aDV��

]�N ��V=I � U4K�[ [���U KDU=\DKDU�R�U=ID[�J4[?SYV=I V4W [���U I�H�` S�ID[DV J=I S�ID[ N�]R�R���J=IDW1) �=\�[�K�.V��^(a���.6O4I�H�` *��]�N \DK?S�ID[ � J=IDa L3[DV R4[�aDV=HD[ N�]\DK?S�ID[�W1)���^4a ^�a��=I���. ��(V�V4K4a�.j[�KDJ=IDWDV4K4`�)%I4H�`�*�*��]�N3R �?S�\ [DV [���U R4[DJ4K�[ V4W [���U I�U ��[ I�H�`���U4K V=IM[���U b�S�I�U N�]�=\D[�K�d4I�U ��[�3=I�U���[83=I�H4`�) �=\D[4K�*�����V�V4K�a E�E �

�����S(b�U ) �=\D[�K 7d�;�� @�@?*�� U�b�R�U��U �?S�[1) �?*��

� � � �'%�� ��� � � � ������ ����� � S�I���b=HDaDU c�R4[�a?S(V12��f0 S�I���b=HDaDU c�R4LDR�]4[�L4\fU�R12 ��0 S�I���b=HDaDU c4a?S�KDU=ID[�2���0 S�I���b=HDaDU c�R4LDR�]�R4[DJ�[�2��D0

aDU4W?S�I�U�7�:�����:�5���3�2 � 7 ��]��S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*��

��� @�: N4W4\=�2 � 7 N4a?S�K4\=�R4[�K4H��4[ a?S�KDU=ID[ N4a4\=�R4[�K4H��4[ R4[DJ4[ ��HDWI�

a?S�K4\ dMV=\�U=IDa?S�K1) 7�:�� ��:85���3�2 � 7�*�����Da?S�K1) 7�:�����:�5���3�2 � 7�*��

]�N @�V�V � J4[MU�J���� U=ID[�K�LMS�I [4HDK4I N�]����S(b�U )�)"a4\3d KDU�J4a�a?S�K1)"a?S�K4\ *�* 7d ;�� @�@?*��

]�N ;DV��MR4[DJ4[ [���U W?S(b�U [DV �DU4[ `�V4KDU S�IDWDV4K4`�J4[�S(V=I N�]S�WQ)�R4[DJ4[1)"a4\�/�0=a�3=IDJ=`fU1.6O���HDW�*ud�d / ��*\�U4K�KDV4K1)���R4[�J4[��YI��(*��

S�WQ)X5�3 � 5�2 � 71) �4HDW�2%R4[83=`�V=aDUD*�*\DK?S�ID[�W1)���^DR S(R J a?S�KDU��4[DV4K�L��=I���.Pa4\�/�04a�3=I�JY`�U?* �

U�b�R�U3S�W )X5�3 � 5�7�:��1) ��HDW12"R�[�3=`DV4a�U?*�*\DK?S�ID[�W1)���^DR S(R J KDU��4H�b�J4K W?S(b�U��=I���.ja4\�/�04a�3=I�J=`�U?*��

f�¯

Page 55: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� � �i��Q� � ��

) � V�S�a�* ��b�V�R�U4a?S�K1)"a?S�K4\ *��

��� ��� � ������� ����� � � � �� � % ��� * � %���� , � ����

ljm1npoK�1��s����a{�v�tas�u1xCz�o z~m1w\xCu1v\�>wF�rs��j j{M�Lo¤z�m>{}z�n �u1wFwyx1o\ty{�x��>w\���©{�taw:q�s�x¹{$t~m1wyo~o�YsL{��aq« jnpz~m1s�u1zK{�xC��Ì s��jz�m1wyv �>wFn�x��es�x«z�m�w\o�{�v�w ��s�  ¡�tas��pu1v�xes�� qCn�{���s�x>{��<� � zK |{}o j��npz~z�wyx@�C�e²¹���±n�t�mY{���q¢or{�zK½�ÂTÁ�½�Ã}¿jÁ�Ã1½9Á EE_ S�I���b=HDaDU c�R4[�a?S(V12��f0S�ID[ ��V=H�ID[I�

� V�S�a [�K�L1)�S�ID[ KDV���.eS�ID[Mb4a�.eS�ID[ K�a�*��

S�WQ)"KDV�� d�d � � ��� *��V=H�ID[ E�E �

U�b�R�U��S�ID[ \�V�R�R d � � ��� O A�)"KDV�� i b4a i K�a�*������S(b�U )%\�V�R�R?*��S�ID[ \Md3\�V�R�R4O /=\�V�R�R��\�V�R�R d \�V�R�R /=\=�[�K�L1)"KDV�� E \�.u)�b4a E \ *�c�c ��.y)"K�a E \ *�0�0 ��* �

S�ID[ `�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*��\DK?S�ID[�W1)��:?S ���D[ �=H�U�U=I�R��=I��(*����V=H�ID[ d ���[�K�L1) �1.��1.��?* �\DK?S�ID[�W1)��;4H(`���U=K V4WMR�V�b=HD[?S(V=I�R S(R ^�a��=I���. ��V=H�ID[�*��U �?S�[1) �?*��

� � �:6�� �O� " 6�6 ; � 4i�9-������ 6 � ; � � � ;T<2<N��

s � � � � � ���� � � � � �� ���% � 2����% ���ljm1wKwy�pwyv�wyxCz�ojs��fÃCÃ�>$#(��%&# U %\{��~w o�z~s���wMq$npx@v$wFv$s��~� npx@z�m1w¤�,s����ps� jnpx1� s���qCwF�:�ÃCÃ#>)#�o�%&#�o�%1ÃCÃ#>$#to�%&#2Q %1ÃCÃ#>)#GQ�%'#�o�%LÃCÃ#>$#2Q %&#2Q %ÃCÃ#>)# U %&#�o�%1ÃCÃ#>$# U %&#2Q %1ÃCÃ#>)#(�%'#�o�%LÃCÃ#>$#��%&#2Q %

] ÃLÃ#> npojs��9z<�C�>w>MÄ��&#(%V�9ªjs�z�wKz�mY{�z:� �ÃCÃ#>$#2Q %&# U %a` ` ] JQJyÃCÃ�>$#2Q�% M P UkM `E` ] J ] JyÃCÃ#>�P7Q M P U M

{�xYq$z~m>{�zjxCu1v�wy��n�ty{}�p���ÃCÃ#>>`E`ºÃLÃ#>$#�o�% `E` �1ÃLÃ#>$#�o�%'#�o�%

] ÃLÃ#>�ty{}xP�>w@u1o~w:qP{�o${��>s�n�xCz~wy�\z�s�z�m1w�§>�~o�z�wy�pwyv$wyxCz#wy��wFx·z~m1s�u���mJnpz#npo\s��rz<�C�>w)�Ã��@�1Ã�B � ¾ C >MÄ!�B+1�Yw:ty{}u1o�wjnpz��Yw:tas�v�wyo�)BÀ�¾#>MÄ��AD �H�1¾ >MÄ��B+> jm1wyx�u1o�w:q� jm1wy�~w|{±��{��pu1wnpojx1wyw:q¢w:q��Ëfu�z ] ÃCÃ�>�npo\x1s�z�w��u1np��{��pwyxCz5z~s·{��Ys�npxCz�wy�M� ¦1s��\wa�>{�v$����w�¡f��s�u�ty{�xX! z$t~m>{}x1��w«npz~o

��{��pu1w��'ljm1npofqCnpo�z~npx>taz�nps�x5ty{�x\wM{�o�np�p�5{}x>q5q�{�x1��wy��s�u1o��p� �Ywj�1�pu1���~w:q#npx v\u1�pz�n��B§>�pw9o�npz�u>{}z�nps�x�onp�p��u�o�z��a{�z~w:q�n�x�z�m1w �,s��p�ps� jnpx1�Kwa�>{�v$����w�� � x

D\m@�AD?��Ä >MÄ�� ]�C ¾C¾ V

fLf

Page 56: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ���*� � �i��Q� � ��

C ¾C¾$npoK{$��{}��n�{�����wKs}�(z<�C�>w�À>¾�>MÄ��AD?�%�1¾ >MÄ!��� C ¾L¾e! orz<�C�Yw5npo tas�v$�1�pwyz~w�¡KJ&��>�� D�¾ C1C ¾C¾ Mnpor{��p�ps� (wMq��7S(s�u tF{�x«{�o~o�np��x@z�s��,sCs>�fËTu1zj��n���wyx

D\m@�AD?��Ä >MÄ�� = Ã��&#(% V= Ã��«npo5{@��{��~n�{��1�pw#s��jz<�L�Yw�p Ã��@�1Ã�B � � � ��� � � = �"�� I·¾ C >MÄ��k!p�$ljm1npoKnpo5{�x pÇnpx>tas�v$�1�pwyz~w*!z<�C�>w�¡���s�u ty{}xX! zrza{���wqJ&��>��AD�¾ C�= Ã�� M ��S(s�u�ty{�x1x�s�z {�o~o�np��x�z�s = Ã���¡�{�x>q�{��pz~m1s�u1��m = Ã�� jnp�p�¢q¢w:ty{M�\npxCz�s {¤�>s�n�xCz~wy�fnpx5v�s�o~z t�s�xCz�wa�1z~o:¡Cnpz9n�oTx1s�zf�Ys�o~o�np�1�pw��,s�� J = Ã��c`E` � ����� M wF��wy�z�s\�YwKz��~u1w��ljm1w$tas�v$�1np�pwy�r jnp�p�({}���ps�  ��s�u�z�s@v$n��«z�m1w${}���a{M� l �>s�npxLz~wy�Kx1s�za{�z~n�s�x {}x>q� jn��p�9��wFz npz��np��mLzM¡C�1u1z�npz(x1wFw:qCorz~s5�Cx1s� � jm>{�zjz~m1wK��w:{}��npz<�#npo:��d¤x>taw ��s�u@qCw:ta��{��~wKz�m1w {��~��{M� l �Ys�npxCz�wF�tas�����wMtaz��p�C¡1��s�u«ty{�x@z�m�wyx«{�tytawFo�oKnpz(wynpz~m1wy�r j{M�C�

s � � ���'% ���� �­Cu1���>s�o�w  �wKm>{M��w {�o�npv$�1�pwK{����a{M�L¡C{�xYqe{#o~u1�C�,u�x>taz�nps�x$�Bs��j{�q1qCnpx1�#npz�wyv�o(z~s\npz:�@ AAD C >MÄ�D �@� P�I��Eg Q�oEo

>MÄ�� Ã��@�1Ã�B&# �@� P�I��Eg % V>MÄ��PÄ�EL¿��C¾ C ��D�Â#DM¿�D:Ä��A� ` o V

>MÄ�� �1ÃCÂCÂ?J >MÄ�� m MN

> C J�Ä�EC¿��C¾ C �#D�Â#D:¿�DMÄ��A�ZH ` ��� P I��Eg M NC À��A>MÄ!� C J&�?� AAD?���KL�f �1¾C¾7¿>Ã}Ä�B7D�Â�DM¿�DMÄ�� � J�¿>Ã�m h A M j}ÄXfkL ��� P�I��Eg MeVD\mA>?�J�Q MeV

WÃ����¢Ã�B&#BÄ�EL¿��C¾ C ��D�Â#DM¿�D:Ä��A��PEP�%�` m V

W³�wFz�! ojo�wyw�m1s� �w:{}o��$npz�npo(z~s5�~wyv$s���wrz�m�w {}���1npz~��{��~�\�pn�v�npz�{�z~nps�x npx@z�m1npojtas1qCw�¡��L�$q¢�LxY{�v$n��ty{}���p�\�~wa� {}�p��s1ty{}z�npx1�#z�m1w {}����{M���@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH>MÄ�� ] à ���1Ã�Bc` � ����� V>MÄ��PÄ>ÃLÂCÂC¾�½>`ao V>MÄ��PÄ�EL¿��C¾ C ��D�Â#DM¿�D:Ä��A� ` o V

>MÄ�� �1ÃCÂCÂ?Jm M>MÄ��am VN> C J~Ä�EC¿��C¾ C �#D}Â#DM¿�DyÄ��A� HE`7Ä>ÃCÂCÂL¾�½ M NS ] � D + �AD·¾ E�� ¾ C �MÀ�Ã�½�D9Á � D�ÃLÂCÂC¾�½�à �AD3[A>?�*F �:À>Ã�½�D C ¾�� Q\o ¿>¾ �AD1>MÄ��A� ]ESÄ>ÃLÂCÂC¾�½>PE` Q\o VÃ��@�1Ã�Bc`nJ&>:Ä�� ]kM � D�ÃCÂCÂC¾1½kJEJM½TF�Ã�� ] M Ã����1à BKL Ä>ÃCÂLÂC¾�½ ] ��>��AD�¾ C J&>MÄ�� MEMeV> C JyÃ����1à Ba`E` � ����� M NC À��A>:Ä�� C J&� �EAAD?��� L�f�¾ E�� ¾ C ¿�DM¿>¾��@B [A>?��F h A7D�Â�DM¿�DMÄ�� �*j}ÄXfkL

Ä�EC¿��L¾ C �#D�Â�DM¿�DMÄ�� � MeVD\mA>?�RJ�Q MeV

WW

à ���1Ã�B&#,Ä�EC¿��C¾ C �#D�Â�DM¿�DMÄ!�#�*P P�%�` m VW

f�®

Page 57: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� ��� �:� � ����� � � �� ����� ��� � �

� �f��s�u$ j{�xCz(z~s\�>w�z���u�wa� ����u�w�¨Kªr­ � ¡�u1o�wJ�@>��AD �#�,s���Ä>ÃCÂCÂC¾1½ {�xYq\Ä�EC¿ ¾ C D�Â#DM¿�D:Ä��A�1���m1wyx$q¢�LxY{�v$n�ty{}�p���K{��p�ps1ty{�z~n�x��r{Kv\u1�pz�n�qCnpv\wyx1o~nps�x>{}��{����a{M�L¡Mnpz9npofu1o�uY{��p�p� �>wFo�zfz~s5{��p�ps��

ty{}z�wr{�x\{��~��{M�Ks����Ys�npxCz�wy�~o:¡C{�x>q�z�m1wFx5npx1npz�n�{}��n �ywTw:{�t~m#�>s�n�xCz~wy�fz�s {¤qC�Cx>{�v�n©tF{��p�p����{��p��s¢tF{�z�wMq���~s�  �>��ljm1w �~wyo�u���z~npx1� �~��{�����w:q �${����a{M�ety{}x«o�{M��w o��Y{�taw�¡�{��pz�m1s�u1��m�npzrnpojx1s�z¤x1w:tawFo�o�{}��np�p�tas�xLz~np��u1s�u1ofnpx5v�wyv$s����K{�o({K�~w:{��Y{����a{M�5 �s�u��©q��Yw��<+jwy�~wrnpof{Kz< �s���qCnpv$wyx1o~nps�x>{}��wa�>{�v��1�pw��

S ] ½ �AD�Ã��AD·Ã}Ä�Ã��@�1Ã�B ¾ C À>¾#>MÄ!�AD?�A� ]ES>:Ä�� ]E] Ã����¢Ã�Ba`nJ >MÄ�� ]E]kM ¿�ÃCÂCÂC¾�½ J~Ä��1¾�[ � ] ��>�� D�¾ C J&>:Ä�� ]kMEMIV> C J�Ã����1Ã�Bc`E` � � ��� M NC À��A>MÄ�� C J&�?�EA D?���KLTf � E��J¾ C ¿�DM¿>¾��@BBj}ÄXf MIVD�mA>?�J�Q MeV

W

C ¾��J&>>`ao V >>CPÄ��1¾�[A� V >*PEP M NSE] ½?� D�Ã��ADH�:À>Ã�½�D C ¾�� Ã}Ä�Ã��@�1Ã�B ¾ C >:Ä��A� ]ESÃ����1Ã�B'# >�%a` J&>MÄ�� ]kM ¿�ÃCÂCÂC¾�½ J~Ä�½�¾CÂ?EC¿CÄ�� ] ��>��AD�¾ C J&>MÄ�� MEMeV> C JyÃ��@�1Ã�B&# >�%a`E` � ����� M N

C À!�A>MÄ�� C J&�?�EAAD ���KLTf � E��·¾ C ¿�DM¿>¾ ��BBj}ÄXf MeVD\m >?�J�Q MIV

WW

S(s�uJty{�x7��wywy�Pz~m1we{}����{M�k! o5tas�xCz�wyxCz�o$t�s�xCz�np��u�s�u1oM¡9 jm1np��w�ve{}�Lnpx1����{�z�wF�5�~w:{��p�ps1ty{�z~n�s�x¹s��npx>qCnp�Cn�qCu>{��Y��s� jorq¢n�Het�u1�pz:¡C jnpz�m@{#�1npz(s}� w��¢����n�tanpz��>s�npxLz~wy�r{��~npz�m1v�wyz�n�t��

>:Ä�� ]E] Ã����¢Ã�Ba`nJ >MÄ�� ]E]kM ¿�ÃCÂCÂC¾�½ J~Ä��1¾�[ � ] ��>�� D�¾ C J&>:Ä�� ]kMEMIV> C J�Ã����1Ã�Bc`E` � � ��� M NC À��A>MÄ�� C J&�?�EA D?���KLTf � E��J¾ C ¿�DM¿>¾��@BBj}ÄXf MIVD�mA>?�J�Q MeV

W

à ���1Ã�B&#to�%a`nJ >MÄ�� ]kM ¿>ÃLÂCÂC¾�½kJ�Ä��1¾�[A� ] Ä�½�¾CÂ?EC¿CÄ�� ] ��>��AD}¾ C J&>MÄ!� MEMeV> C J�Ã����1Ã�B'#�o�%a`E` � ����� M NC À��A>MÄ�� C J&�?�EA D?���KLTf � E��J¾ C ¿�DM¿>¾��@BBj}ÄXf MIVD�mA>?�J�Q MeV

W

C ¾��J&>>` Q V >>CPÄ��1¾�[A� V >*PEP Mà ���1Ã�B&# >�%a`ºÃ ���1Ã�B&#to�%aP > ] Ä�½�¾C EL¿CÄ�� V

� xPwynpz�m1wF�$ty{�o~w�¡�z�m1w«wF��wFv$wyxCz�o#s��Kz�m1w«qC�Cx>{}v$n�t\{��~��{M�Pty{�xP�Yw {�tytawyo~o�w:q� jnpz�m7x1s��~ve{�����psCs��Cnpx1�5{��~��{M��o�u1�1oata��np�1z~o:�jÃ����¢Ã�B&# >�%'#�Y�%��� �|z~m1w$qCs�u1�1�pw5npx>q¢n��~w:taz~n�s�x�npv��1�pn�wMq@�C�«z�m1w${}�>s���w5oat~m1wyv$wFo�npoK�Bs��Ko�s�v$w �~w:{�o~s�x¹u1xC�{�tFtawy�1za{��1�pw�¡9��s�u¹ty{�x�o�npv\u1��{�z~w5{�z< (s}� q¢n�v�wyx1o~n�s�x>{��'{}���a{M�� jnpz�m¹{�o�npx1����w�¡'qC�Cx>{�v�n�ty{��p�p���

{��p�ps1ty{�z~w:q\s�x1wa��qCnpv$wyx�o�nps�x>{}�V{}���a{M�V�>:Ä�� ] Ã����1à BQ` J&>:Ä�� ]kM ¿>ÃCÂLÂC¾�½kJ~Ä!�1¾�[A� ] Ä�½}¾C EC¿CÄF� ] ��>��AD�¾ C J&>MÄ�� MEMeV

+js� �wy��wy�:¡���s�u�v\u1o�z�x1s� ��Ywy� �,s��~v¥o~u1�1o�t���np�1z�tF{���tau1��{�z~nps�x1ojv@{�xCu>{��p�p��¡�{�tFtawyo�o~npx1�$z~m1w>1¡ Yz�m@wy�pwyv�wyxCz( jnpz~m Ã����1Ã�B'# > ] ÄV½�¾C EC¿LÄ���PQY�%��

� =-�8O� ;T<�� ;Z����� 6�6�� 6�� ;Z��� < -�� 8

({}��nps�u1o�o�np��x>{}�po5´BnpxLz~wy���~u1�1z~o�µ\ty{}x¹�>w���w:tawFn���w:q7�C����s�u1� ����s�����{}v��@­Cwyw$z~m1w ��>�Å�Ä>ÃLÂTÁGFnpx>ta�pu>qCw¤§>�pw¤�,s��|{#�pnpo�zM� S(s�u@ty{�x@z��a{��@z�m�wyv¥n��9��s�u@ jnpo�m�¡Cs��jo�npv��1�p�5np��x�s���w¤z�m1wFv���K MON�M

fLq

Page 58: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&� �@�� #"%$

@ >MÄV½� EBAADDC#��>�Å�Ä�ÃCÂTÁGFIHÁCÁCÁSE] ��F�>@�^[ >�ÂC >�Å�Ä>¾ �AD�½�¾}Ä����¢¾CÂE= $ ] S��>�Å�Ä>ÃCÂ?J �" "?� g L #" � " � MeV

ljm1w��,s��p�ps� jnpx1��t�s¢q¢w\o�wyz~o5{�pÇz�npv�wy�>s�v\�X!p��¨j�,z~wy�"g >M¿�D?�@n�o ty{}�p��wMq�¡Yz�m1w#�1��s����a{�v� jnp�p�tas�xLz~npxLu�wjwa�1w:tau1z~n�s�x$u1xCz~n�� p ÄX!�v�np���pn�o�w:tas�x>qCo9m>{M��wj�>{�o~o�w:q�¡Cz~m1wyx\x1s���v@{��Cwa�1w:tau1z~nps�x$ jnp�p�C�>wnpxCz�wy�~��u1�1z~w:q«{}x>qvp ¾}Ä>ÃCÂCà ��¿KJ M !� jnp���Y�Yw5ty{��p�pw:q �>wa�Bs���w�x1s��~ve{��Ywa�1w:tau�z�nps�x«npo���wyo~u1v$wMq��@ >MÄV½� EBAADDC#��>�Å�Ä�ÃCÂTÁGFIH�?�1à �A>C½ U1¾#>\A ¾}Ä�ÃCÂCÃ���¿ JGU1¾#>\A MN�}¾}¿�D?��FF>MÄ1ÅJ MIV�@>�Å�Ä>ÃCÂXJ #" � � � � L #" � � ��� MeV

W

ÁCÁCÁU1¾#>�A g >M¿�D?�J >MÄ��7Ä M SE] [1Ã#>?�A� C ¾ � +,Ä�+\¿�>�ÂCÂ#>@��DC½�¾}ÄiAA� ]ESNÂL¾}Ä1ÅHE���DC½ V� ����E�½?� >?�A>M¿�D ��U1ÃC > � V> C J � Ä M �AD?��E!��Ä VEF��DC½>` JyÂC¾}Ä1Å M Ä ] Q\oEoEo V

¿FDM¿���D?�RJ �A>?�KL�oL ��>�� D�¾ C J&> � MEMeV> C J E���DC½*H `7Q\oEoEo oEoEo�� M N SE] ¿>¾�� D��*F>Ã}Ä Q ��DL½�¾}ÄBA ] S>?�(Á >?���JU¢ÃC E�D9Á ��U��#��DL½Z` E���DL½ S Q\o oEoEoEoEo�� VE��@DC½ h ` Q\o oEoEoEoEo�� V

W

> ��Á >?��� U1ÃC E�D�Á ��U��&E���DC½Z`HE���DC½ V�@>�Å�Ä>ÃCÂXJ #" � � � � L�¾}Ä>ÃCÂLà ��¿ MeV�@D?�A>?�A>:¿�D?�J " g "�� I � � � I � �KL �A>?� L J �?����E�½ � >?�A>M¿FD?��U1ÃC ]kM o MeV

Wljm1npo\o�{}v$w$v�wyz�m�s¢qPty{}xP�>w«u�o�w:qPz~sJty{�zat~m·wFv$wy�~��wyx>t��·o~np��x>{}��o#�pnp��w #" � � ´B�1u1o

wy�~��s��aµjz~sLsY�

0 ���������

� x É:Ê nLe1¡9z~m1w«¨¤v$wy�~n©tF{�x·ª¤{�z~n�s�x>{��j­Cza{�x>q1{}��qCo � x1o�z~npz�u1z~w t�s�v$v�npo�o�nps�x1w:q¹{�tas�v�v$npz�z~wyw�¡R+e}¸ É�É ¡9z�s�o�za{�x>q�{���q¢n �Fw«z�m1w@� ��{�x1��u>{���w���¨j�,z~wy�${���s�x1�>¡f{}��qCu�s�u1o#�1��s1tawFo�o:¡±n�xYta�pu>qCnpx1�o�wF��wy�a{��f jn�qCwyo~�1��wM{�q��1u1����n�tK�~wy�Cnpwy jo:¡�z~m1w\tas�v�v$npz�z~wyw*! oj (s����@ j{�oj§Yx>{��p�p�@��{�z~n�§>w:q�{�o�{}x¨rv�wy��n�ty{}x�ªr{}z�nps�xY{��f­Cz�{}x>q1{}��q�¡ R+e�� É f Ê � ÉMÊ n Ê ¡Cs�x ¼ w:tawyv\�Ywy� É ¯>¡ ÉMÊ n Ê ¡�{�x>q��1u1�1�pnpo�m�w:qnpx¹z�m1w@o~�1��npx1�«s}� É:Ê�Ê r1��¦1s�� z�m�wev�s�o~z��Y{���zM¡ ���� #"%$ o~z�{}x>q1{��aqCn �ywyo\wa�1npo�z~npx1�«�1�a{�taz~n©t�w�¡ jnpz�m«{ �,wy  {�q1qCnpz~n�s�x1oT�,��s�v $ P P ´,v�s�o�zTx1s�za{��1�p�#�,u1xYtaz�nps�x@�1�~s�z~s�z<�C�>wFo�µr{}x>q�o�u1���>s���z��,s��v\u1�pz�npx>{}z�nps�xY{��(t~m>{}��{�t�z�wy�@o�wFz�o�´,npx>ta�pu>q¢n�x��¹z�m1w«v\uYt�m¢� ��{�v\�Y{�o�z~w:q�z��~np����{}�1m�o~w��u1wyx>tawFo�µy�ljm1w ���� �"H$ o�za{�x>q�{���q@{}��o~s �Bs���v@{��pn �ywyo�z�m1w ����u1x¢� z~n�v�wr�pnp�1��{}���\o~u1�1�Ys���z±�,u1x>t�z�nps�x1oM�ljm1w��1u1�1�pnpo�m1wMq ­Cza{�x>q�{���q�npx>ta�pu>qCwFo { � �¤{�z�nps�x>{��pw�¡ �� jm1n�t�mºwa�1�1��{�npx1o�ve{}xL�7s��5npz~o

qCw:t�n�o~nps�x1oM¡�{�x>q#qCnpo�t�u1o�o~wyo({¤xCu1v\�>wF��s��>o~u1�1z��pw��>s�npxLz~o:¡�npx>t���uYqCnpx1�ro~wy��wy�a{��1s}�>z�m�s�o�wjtas���wy��w:q

fLn

Page 59: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� �&� �@�� #"%$

m1wy�~w���´,ljm�w �¤{�z�nps�x>{��pw9npo ��x�s�z'�Y{���z�s��>¨Kªr­ � ­¢z�{�xYq1{��aq R+e�� É f Ê � ÉMÊ n Ê ¡a�1u1z9npo'npx>ta�pu>q¢w:q¤�,s��npxC�,s���ve{}z�nps�x�s�x1�p�C� �LµTljm1w$­Cz�{}x>q1{}��q@m>{}oK�>wywFxJ{�qCs��1z�w:q�{�oK{�x�npxLz~wy��xY{�z�nps�x>{���o�z�{}x>q1{}��q�¡� ­2d l���� � Ê n Ê�Ê � É:Ê�Ê r1¡�{}�pz�m1s�u1��m�z�m1w��¤{�z~n�s�x>{��pwjnportau1�~��wyxCz~����x1s�zjnpx>t���uYqCw:q��

� ��� � �� � �$� ���� � � ���������

²«{}xL� 587:9 ;@�1�~s����a{�v�o(tas�v��1np�pw( jnpz�m${}x ���� #"%$ t�s�v$��n��pwy�9 jnpz�m�s�u1zjt~m>{�x1��wyo:� ��m1wy��wt~m>{�x���wyoK{���w���w��u1np��wMq�¡Yz�m1w5t�s�v$��n��pwy�j jnp�p��x1w:{}���p�e{}�p |{M�Cojz�wF������s�u'�f¨ ��npo~zjs��(qCn�£VwF��wyx>t�wyo�Ywyz< (wFwyx3587:9 ; {}x>q ���� #"%$ npojnpxZ2sq�4��9ljm1wKv$s�o�z�n�v��>s���za{�xCz({��~wS5"���$ ��%1�:�.-�� �'�6�'��^5-�%&��7 t�v ¦�u1x>taz~n�s�x$�1�~s�z~s�z<�C�>wFor{���wFxX! zjve{�xYq1{�z~s�����n�x ���! #"%$ ¡C�1u�z

z�m1wy�\npv��1��s���wfwy���~s��jt~m1w:t~�Cn�x��>�9ljm1wynp��u1o�w¤wyx>{}�1�pwyo|t�wy��za{�npx ���� #"%$ �Bw:{�z~u1��wyo� jm1n�t~ms�z�m�wy�� jnpo�w�¡C�,s��j�>{�t~�C |{}��q�tas�v��>{�z~n���n��pnpz<�C¡E{}��wKo�u��1�1��wFo�o�wMq��

UV02� 02,.9F��9B��UV0:;�;�%1��7Mt�v � ¦'�psC{�z�of{}��w��>{�o~o�w:q�{�o?#>sL{}z�o�´,npx 587�9 ; #>sL{}z�of{��~wrtas�xC���wF��z�wMq@z�s$qCs�u1�1�pwyoj jm1wFxe�Y{�o�o~w:q@z~s${��,u1x>taz~nps�x>µ� ¨r�~��u1v�wyxCz�o({}��wr{}u1z�s�ve{�z~n�ty{��p�p��ty{}o�zfnpxCz�sKz~m1wr�~n���mCz'�Bs���v �,s��Tz�m1wrty{}�p��wMq��,u1x>t~�z�nps�x'� ��npz~m1s�u1zjz~m1wK�,u�x>taz�nps�xe����s�z~s�z<�C�1npx1�#z�m1w �,s��p�ps� jnpx1� �1�~s����a{�v  (s�u1��qCxX! z �s������>wMty{�u1o~w(p ¿�D}Ã}ÄX!�n�ojw��¢�Yw:taz~npx1�eÌ�npxLz~wy��wF��o:�@ >MÄV½� EBAADDC#�?�EAA>}¾TÁGFIH@ >MÄV½� EBAADDC#�?�EA1Â�> = ÁGFIH>MÄ��P¿�D}Ã}ÄKJ&>MÄ!��ÃL >MÄ!� =?MN� D?��E���Ä�ÃQP = V

W

¿>Ã#>:ÄKJ MN>MÄ��7> VC ÂC¾LÃ�� CKV>MÄ�� Ã}ÄF�\[AD?� V>a`cb VC `��TÁ� VSE] AAD�Â#> = D?�1Ã��AD�¿�>��?�1Ã\_�D�� ]ESÃ}Ä���[AD?�c` ¿�D}Ã}ÄKJ C LY MeVÀ��A>:Ä�� C J\f h�C P h AQ` h ABj}Ä fkL C LZYL«Ã}Ä��\[AD � MeV

W35�608� !#02�L!#%M;�08�6% �'� t�v ljm1wKo�za{�x>q�{���q n�xYta�pu>qCw¤§>�pwyo��,s�� ���� #"%$ {}��w

f Ê

Page 60: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� ��� � �

Ã#����D?�@��ÁGF ¨ro~o�wy�~z�nps�x�o½?��B�À�D�ÁGF ��m>{}��{�t�z�wy�¤n©q¢wyxCz�n�§Vty{}z�nps�xD?����Ä>¾fÁGF � �~��s��¤m>{�xYqC�pn�x��C ÂC¾CÃ��(ÁGF ²«{E� {�xYqe² n�x���{��pu1wyo��Bs��,#>sL{}z�oÂ#>M¿�>?� �9ÁGF �pnpv$npz�o9�Bs��jnpxCz�wy����{���z<�C�YwyoÂC¾�½�ÃCÂ�D9ÁGF � xCz�wy�~x>{�z~nps�x>{}��npoa{�z�nps�x$npxC�,s¿>Ã���FjÁ�F ¨�q¢��{�x>tawMq@ve{}z�m#�,u1xYtaz�nps�x�o��D?�BY}¿LÀjÁGF ªjs�xC�<��s1ty{}�*wau1v����>�Å�Ä>ÃLÂTÁGF � �>tawy��z�nps�x«mY{�x>qC�pnpx1��?�EA1Ã��LÅ�ÁGF ({}��n�{��1�pw¤xLu�v\�>wy�~ojs��f{�����u1v$wFxLz~o�?�EAEAAD C ÁGF ­Cza{�x>q1{}��q@qCwa§Yx1npz�nps�x1o�?�EAA>�¾fÁGF � x1�1u�z l d¤u1z~�1u1z�?�EA1Â#> = ÁGF �Kwyx�wy��{}��»jz~np��npz~n�wFo�?���A>MÄ¢Å�ÁGF ­Cz~��npx1�$²«{}x1np�1u1��{�z~n�s�x�A>M¿�D9Á�F ¼ {�z~w {}x>q�ljnpv$w��,u1xYtaz�nps�x�o

� �r��s�u¹ |{}xLz�z�s«o~u1�1�Ys���z#�Ys�z�m ���! #"%$ {�xYq^5 7:9 ; ¡���s�uJty{�x¹u1o~w@z�m1w �,s��p�ps� jnpx1�tas�x1o�z~��u>taz~nps�x@ > C AAD C � � g � $ � �SE] ���! #" ½�¾�AAD ]ES@ D�Â���DSE] � Ã}ÄBA � ½�¾*AAD ]ES@ DMÄiAA> C

� � ;�� �O�

� �'��s�uX! ��w¤u1o�npx1�5{}xC�5s}�'z�m1w¤ve{�z~m1o9��s�u1z�npx1wyoj�~wyv$wFv\�>wy�9z~m>{�z���s�uX! ���Cx1wFw:q�z�s v�wyxCz�nps�x#z�m1wve{}z�m1o��pn�����{��~� s�x#z�m�w|tas�v$�1np�pwf�pnpx1w¤´,s�z~m1wy�~ jn�o~wjz�m1wjv@{�z~m1o�tas1qCwj �s�x?! z9�Ywj�pn�x���w:qKnpx>µ9{}x>qz�mY{�zK��s�uX! ����x1wyw:q�z�s@npx>ta�pu>q¢w ¿>Ã���F|ÁGF�´,s�z~m1wy�~ jn�o~w\z�m1w\��{}�pu1wyor�~wyz�u���x1w:q��C�«z~m1w#��s�u�z�npx1wyotas�u1��q$�YwKv$npo�npxCz�wF���1�~wyz�w:q�µy�Ëfw��,s��~wr��s�u\o�za{���zT j��npz�npx1� v\uYt�m�ve{�z~m1o<�<��wF�©{}z�w:q\t�s¢q¢w�¡1t~m1w:t~�\z�sKo�wFw�z~m>{�zTn�z9m>{}o�xX! z({}�p�

�Ywywyxeq¢s�x1wj�Ywa�,s���w��f²«{}xC� ve{}z�m1o9��s�u1z�npx1wFo:¡�n�xYta�pu>qCnpx1�K��s�u1z�npx1wyo�z�mY{�z9s�£�wy�j{�����n�z~��{}��� �1�~wa�tanpo�nps�x {}��w({M��{}np�©{}�1�pw��C� C ��Àj�,��s�v�Ä�D?�1Â�> = Á�Ã��@��Áa½�¾}¿&�C¨¤�po�sjo�wFw(z~m1w $ �$I � FFD�Â}À S ÂLÃ}Ä1Å�E>Ã�ÅAD�� S $ S ¿>à ��F�� �1¾ E���>MÄ�D��§>�pwKnpx$z�m�w Å1¾�ÀEF�D?��Á DMÄ1Å�Áa½}Ã}¿jÁ�ÃC½9Á EE_ ��s��1m�wy�j�,s��|{#�ps�x1�5�pnpo�z�s��f{M��{�np��{��1�pwj�~wyo�s�u1��tawFo:�

d¤x1wj�1��s��1�pwyv  jm1wyx# j��npz~n�x��rxCu1v$wF��n�ty{��C{��p��s���npz�m�v$oYn�o9s��1z�{}n�x�n�x��jve{�t~m1npx1w�tas�x1o~z�{}xLz~o:�d¤x«­Cu1xX! ojz�m�wy�ety{}x@�>w s��1z�{}npx1w:q�npx CJU1ÃL E�D��9Á�FIHY��ljm1w ���� #"%$ o~z�{�xYq1{��aq$�~w:tas�v$v$wFx>qCoz�mY{�zro~u>t~m t�s�x1o~z�{�xCz~o��Yw\qCwa§>x1wMq�n�x@z~m1w5m�w:{�qCwF�r§Y��w(C C ÂL¾CÃ���ÁGF HY�j­Cu1x?! oK{�x>q o�z�{}x>q1{}��qCo{��Y{���zM¡Cz�m1wFo�w#��{��pu1wyoj{��~w x1s�zj{��p j{M�Co(�~w:{�qCnp�p�e{M��{}np�©{}�1�pw��ljm1w ªr� � � ´ ª±u1v$wy�~n�ty{��'� � �¢z~wyx1o~n�s�x1o �K�~s�u1�>µ�npo� (s����Cnpx1� s�x$�1�~s��Ys�o�npx1�\o~z�{}x>q1{��aqwa�1z�wFx1o�nps�x�o�z~s$���,s��jxCu1v�wy��n�ty{}�� (s�����¡1��u1zrx1s�z�m1npx1�e! oj��w:{�qC�@��wyzM¡>o~s\�>w��,s��~w5��s�u«qCs${�xC�

m1w:{M�C� tas�v$�1u1za{�z~n�s�x'¡ywFo��Yw:tan�{��p�p�  jnpz�m �~w:{��CxCu1v\�Ywy��oM¡ � o�u1����wyo~zfz�m>{}z'��s�u �1�~s� jo�w�z�m1�~s�u1��m{ � EC¿FD?�A>C½�ÃL � Ä>ÃC BA��>����YsCs�����ljm1npx1��ojz~s${M��s�n�q\{}��w� ¦'npx>q¢n�x�� z�m1w qCn�£�wy��wFx>taw �Ywyz< �wywyx@��wy�~�$o~n�v�np�©{}�'xCu1v\�Ywy��o¤´,n��'��s�uX! ��w¤o�u1v�ve{}z�npx1��{}x{��pz�wy�~x>{�z~w o�np��xeo~wy��npwyoM¡'{�q�q«{��p��z�m�w �>s�o�npz�np��w z�wy�~v$ojz~s���wFz�m1wy� {}x>q@{��p�'z~m1w x1wy�C{�z~n���wz�wy�~v$o�z�s���wyz�m�wy�:¡Yz�m�wyx«tas�v\�1npx1w¤z�m1wKz< �sLµF��P¼ np�Cn�qCnpx1�K�C�${ ��wy����o�ve{}�p�1xCu1v\�>wF�r´<t�mY{�x1��w�z~m1wKs��aqCwy�js��'s��>wF��{�z~nps�x1ojo~s5z~m>{�zjz~m1npoqCsCwyo�xX! zjm>{}�1�Ywyx>µy�� ²@u1�pz�np�1�p�Cnpx1� �C�${#��wy�~�$�1np�#xCu1v\�>wF�:�

��s�v�v$s�x5�1�~s��1�pwyv�ofz�mY{�zj��s�u@v$np��mCz9� {�taw {��~w�� �

®Lr

Page 61: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� ��� � �

� 9G;N��%&��7 um�'��9��'"�08/&%1��^ t�v �jwM{��YxLu�v\�>wy�~or{��~w�mY{�x>qC�pw:q npx$ j{M�Lojz~m>{�zjqCs�xX! z(��u>{��a{�xCz�wywwa�1�1��wyo~o�nps�x�o�z~s\�Cn�wF�©q wa�>{�taz¤��wyo~u1�pz�oM� � z�! oj��npo~�L��z�s\z~wyo�z¤�,s��(wa�>{�tazrw��u>{}�pn�z<�C�fËTwyz�z~wy�n�ojz~s5u�o�w o~s�v$wFz�m1npx1�#�pn���wA ` ¿>Ã�mRJ�Q�Á�oL C à = �kJ�à M L C à = �kJ =RM M{�x>q�z�m�wyx�z~wyo�z C à = � JyÃa= =?MDS A«{��C{�npx1o~zr{#��wy��{�z~np��w wy�~��s���v@{��~��npx'�(»±o�wa�Bu1�ftas�xC�o�z�{}xCz�o'npx C ÂC¾LÃ���ÁGF±{}��w ���Eg��JI u #" � � � ¡ � � ���JI u �" � ��� ¡�{�x>q � � � ���JI u #" � � � ¡�q¢wa§>x1w:qz�s\�Yw�z~m1w o~ve{��p�pwyo~zfxCu1v\�>wF��ojo�uYt�m@z~m>{�zQ�Á�o C P ���Eg�� I u #" � ��� � ` Q�Áto CQ�Á�o P � � ��� I u #" � ��� � ` Q�ÁtoQ�Á�o��cP � � � ���JI u #" � ��� � ` Q�Áto����wyo~�>w:t�z�np��wy�p�C�

E�('�'%C!#%1��7 ��('9F��v 02��! "���!�9F�����2_ t v S(s�u#ty{�x\z~wyo�zfz~m1wjs��Ywy�a{�x>qCoT�>wa�Bs���wj�Ywy� �,s��~v$npx1�{�x#s��Ywy��{}z�nps�x\npx#s���q¢wy�fz�s#t�m�w:t~�5 jm1wFz�m1wy��z�m�wrs��Ywy�a{�z�nps�x5 �s�u1��q� (s������ S(s�u#o�m1s�u1��q{��p |{M�Co {M��s�n�q�qCnp�Cn�qCnpx1�$�C� �ywy�~s>��¦�s���s�z�m�wy��t~m1wMt��CoM¡fo�����npz u��¹z�m1w�xLu�v\�>wy�~o npxCz�s�,��{�taz�nps�xY{��L{}x>q�wa�1�>s�x1wyxCz9�>{��~z�u�o�npx1�rz~m1w C �AD\m�ÀKJ M {}x>q Â�AAD�m�ÀKJ M �pnp�1��{}���¤�,u1xYtaz�nps�x�o{�x>q�tas�v��>{��~w�z~m1wK��wyo~u1�pz�npx1�\��{}��u�wyor{��C{�npx1o�z � � I@´<{��p��npx C}¿>Ã��*FjÁGFIHCµy�

Sp/1�:02� ;�02��! c]�'"�@�/192;_t�v 587:9c;\wyx>t�s�u1�a{���wMq z~m1w(npxCz�wF��t~m>{�x���w:{}�1�pw(u1o~w(s}� C ÂC¾CÃ���{}x>qA¢¾ E = Â#Dfo�npx>taw({}�p��wa�1�1��wyo~o�nps�x�o� jnpz~m�o~u>t~m5q1{}z�{�z<�C�>wFo' jm1wy�~w|{}�p |{M�CoYwy��{��pu>{}z�w:q¤u1o~n�x��z�m1w A¢¾ E = Â#D��~wy�1��wFo�wyxCz�{}z�nps�x ${ �~w:{��Yx1np��mCz~ve{��~w��,s��Tz�m1s�o�wKnpv$�1�pwyv�wyxCz�npx1�jwGHetanpwyxCzxLu�v$wy�~n©tF{���{}�p��s��~npz�m1v�o(npx«�K�Yljm1npor��u���w\{����1�pn�wMq�¡Yn�x@�>{}��z~n©t�u1��{��:¡Yz~s�#YsL{�z~npx1���<�>s�npxLz{�����u1v$wFxLz~o�{}x>q �,s��#v$s�o�z\tas�v��1np�pwy��o\{��~s�u1x>q7npz$qCsCwyo\x1s�z\ve{}z�z�wF�5 jm1wFz�m1wy�@s�x1wqCwa§>x1wForz�m�w5{��~��u1v�wyxCz({�o C ÂC¾Cà �\s���A1¾?E = Â#D1�¨�tytas���qCnpx1�#z�s#z�m�w ���� #"%$ o�z�{}x>q1{}��q�o�u>t~m��1��s�����{}v$of jnp�p��tas�xCz�npxCu1w¤z�s#wa�1m1np�1npzfz�m1wo�{�v�w9�>wymY{M�Lnps�� - F � 1+��N$-�F:1+�I)�'�1�) F �I1T/7CEA1�/t1�/ �GCB) / � )e+ ���e.�/( �1����9ljm1wy��w��,s��~w�¡� jm1wyx�1��s�z�s�z<�C�1npx1���,u1xYtaz�nps�x�o(v@{���wjo~u1��w�z�m1wK�1�~s�z�s�z<�C�>wKnpo(npx>t���uYqCw:q� jm1wyx@z�m�wr�Bu1x>taz~n�s�xqCwa§>x1npz~n�s�x$nportas�v$�1np�pw:q#o�s\z~m1w5tas�v$�1np�pwy�(tF{�x«t~m1w:t~�@n �9z�m1w#{�����u1v$wFxLz~o(v@{�zat�m��� °¤wywy��npx¹v�n�xYq�z�m>{}z5z~m1w�A¢¾ E = Â#De�~wy�1��wFo�wyxCz�{}z�nps�xºqCsCwyo\x1s�z#x1w:t�wyo�oa{���np�p�PnpxC�ta�~w:{�o~w$z�m�w�CEA)�. OF �1����5¨Ktaz�uY{��p�p�L¡Ynpx�v�s�o~zrnpv$�1�pwyv�wyxCz�{}z�nps�x1ojz�m�w\ (s���o�z � tF{�o�w�1�~w:tanpo�nps�x«qCwMta��w:{}o�wyo��1u1zjz�m�w A�-���N*)�npx>ta�~w:{�o~wyo:��J¼ sKx1s�z9u1o~w�A¢¾ E = Â#D|s��fÂL¾}Ä1ÅaA1¾ E = Â#Dju1x1x�w:tawyo~o�{��~np���#o�npx>t�wjz�m1wy�~wrv@{M��{¤��{�����w�Ywy�<�,s���v@{�x>tawj�Ywyx>{}�pz<�L�9¦1u���z�m�wy��v�s���w�¡�z~m1wy��w¤npofx1s �Ys�npxCzfnpx5u�o�npx1� m1np��m1wy�f�1�~wa�tanpo�nps�x$n��'z�m1w {�q1qCnpz�nps�xY{��1�1npz~o( jm1n�t~m$ jnp�p�Y�>wKtas�v��1u1z�wMq${��~wr�C{����Y{���wK{�xC�C |{M�C�ljm1w��1��w:t�n�o~nps�xPs�x1w�x1wyw:q¢o$qCwy�Ywyx>qCo\v�s�o�z~�p�«s�x7z�m1w��1��w:t�n�o~nps�xPs��rz~m1w$npx1�1u�zq1{}z�{\{�xYq\z�m�w xCu1v$wy�~n�ty{��Yv$wyz~m1s1q\u1o~w:q��

��� ����%&��^ t�v ljm1w ���f�T� o�z�{}x>q1{}��q �,s�� #>sC{�z�npx1�}� �Ys�npxCzr�~w:tas�v$v$wFx>qCo�{�o~wyz s����,u1xYtaz�nps�x�oz�s$�Yw\ve{�qCw {M��{�np��{��1�pw��¤¨rv�s�x1�\z~m1wyo~w${���w#�Bu1x>taz~n�s�x1orz~s«ta��{�o�o~n��,��{\��{}�pu1w5{�o � à � ¡" Ä C >MÄ�> ��B�¡ � D?�1¾Y¡ � DMÄ�¾���¿>ÃCÂ�>��AD\A�¡ � ¾���¿>ÃCÂ�>��AD\A�¡>{�xYq@o�s@s�x���²@s�o�zKnpv$�1�pwyv�wyxCz�{E�z�nps�x1oT�1��s��Cn�qCwrz~m1npo9�,u1xYtaz�nps�xY{��pnpz<�L¡�{}�pz�m1s�u1��m\z~m1wy��w {}��wrx�s o�za{�x>q1{}��q x>{�v�wyo9�,s��fz�m1w�,u1x>taz~nps�x1oM�f­Cu>t~m@n�v��1�pwyv\wyxCz�{}z�nps�x�o�s}�,z�wFxe����s��Cn�qCwr�1�~w:qCwa§Yx1w:q@n�qCwyxCz~n §Ywy��oK´Bo�u>t~m�{}o� � à � ¡ � " Ä C >:Ä�>?��B�¡�wyzatyµjz~s${��p�ps� P��s�u�z�s\��wyx1wy�a{�z�w�z�m1wyo~w ��{��pu1wFo:�� �Rm$npoj{ #>sL{}z�npx1� �Ys�npxCz���{���n�{}�1�pw�¡Cz�m1wFx>J�m � ` m M  jn��p�Y�>w�l �j» � n��f{�x>q s�x1�p�\n��Rmm>{�o�z�m1w���{��pu1w � à � �M²«{�xC� ��npv$�1�pwyv�wyxCz�{}z�nps�x1oYta��{�npv z~sr�Yw ���T�f� q}¯Bnjtas�xC�,s���ve{}xCz:¡�1u1z�n �'��s�u�z����\z~m1w�J�m�� `�m M z~wyo�zr{}�>s���wr jnpz�m m\�>wFn�x���{ � à � ¡���s�uX! ���¢§>x>q\z~m>{�z�z�m�wy�{���wFxX! z:�� x«z�m1w#v$wM{�x«z~n�v�w�¡1��s�u�tF{�x« j�~n�z~w5��s�u1�¤s� jx3pÇo�za{�x>q1{}��qk!��,u�x>taz�nps�x1o {�x>q@v@{�ta�~s�oM¡{�x>q �1��s��Cn�qCwr��wy��o~nps�x1ojs}��z�m�wyv �Bs���w:{�t~m@o��Co�z~wyv ��s�u�u1o�w�� � ��z~m1wKo��Co�z~wyv��1�~s��Ln�qCwFo

® É

Page 62: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� ��� � �

z�m1w¤�,u1xYtaz�nps�x�oj��s�u�x1wyw:q&¡1��s�u @ AAD C >MÄ�DK��s�u��"p o~z�{}x>q1{��aqk!��,u1xYtaz�nps�x�ojz�s#�>wKz�m�w o��Co<�z�wyv �,u1xYtaz�nps�x�o:��drz~m1wy�~ jn�o~w�¡1��s�u# j��npz�w¤��s�u1���,u1x>taz~nps�x${�o�{�x\npxCz�wy� � {�taw¤z�sK jm>{}zfz�m1wo��Co�z~wyv¥����s��Cn�qCwyo:¡�s��j j�~n�z~wK��s�u��js� jx\�,�~s�v oata��{}z�t~m'�

d¤x +¤¶9o:¡Yz<�C�>w�¿>Ã}Ä >�D@D�D#�,s��r{\o�u�v$ve{}���\s}���Bu1x>taz~n�s�x1oK jm1n�t~m�{��~w ��w��u1np�~w:q@�Bs��:¡Ys����wMtas�v�v$wyx>q¢w:q��C�L¡Tz�m1w ���f�f� � qgf�¯�o�z�{}x>q1{}��q �,s�� #>sC{�z�npx1�}� �Ys�npxCz {��~n�z~m1v$wFz�n�t�¡f{�xYq¹z<�C�>w¿>Ã}Ä C À¢ÅAD?���1¾?ECÄBA#z�s\o�wFw m1s� �z~s$tas�xCz��~s�����s�u�x>qCnpx1�>�­CwywK¿>Ã���F�D ���J M �,s��|q¢wyz�{}n��pojs�xem�s� �z�s$tas��>w� jn�z~m$wy�~��s���ors�x>taw z~m1wy�k! ��wKm>{}�1�>wFx1w:q��� �5��s�uPu1o�w¹{�x +¤¶9¡fz~m1w«�Bs��p�ps� jn�x��«npxC�,s��~ve{}z�nps�x � ON � /r�Yw�s}� u1o�w�n�� ��s�u� j{�xCz\z~sz��a{��Pwa�>tawy��z�nps�x1oM� � z�! o��,��s�v �j{��~�J��s�u1za{�xCz$´ +jwy j�pwyz~z<��¶9{�t~��{��aq�¡j�j{��pn��,s��~x1n�{e³�{�x1��u>{���w³'{}�>µy� .:)�.�- �JF�)�1 +&/ � ) C CB) � �I)�' �e-T/�� A�)�1 +&/ � )�? ? � 9 � �X;�� ?�� ���(1 F�/$) ��.�)DCB/( �1�� F -�A)

'*) � -��*)�'�M � � ) ��F�/ A��B.�/( �1��D/ � -T/ .�- � F�) F�/ � )l) �*.)DCB/( �1+� �t/ � )�'� � �'�) ��'*1T)GF �I1T/(-*.0/ �B- � � �/ A-GC7M � ��F�/�)�-*'�&/ � ) �I) �T/���1�-�/� ���N � CB1� ��E/ ���F�/ A��B.0/� G1��a.�- �JF�)GF�/ � ) / A- C��TF�1 �*1 � � F��B- � � �'*1+� / � -��E/�/�1 ��GCB- FGF&/ � -T/ � F/ A��B.0/� �1+��� ��� -T/��*1 � �I)�)�' /t1�'�1 OF5� �(/ � ) A) F�� �r/:1t+6/ � ))�-�A � �)'A' � F/ A��B.0/� �1+�$MBK �\) � + �*1 ��'� G' ��GCB- FGF�/ � ) .���A2A�) �E/ ���F�/ A��B.0/� G1������*1 � ' � / -+�I1T/ � )'A/ A-GC � � ) �l/ � ) �e)��T/�� 1T-T/( ��N�� CB1� �E/ ��F�/ A��B.�/( �1+� OF8)��*)�.���/�)�'�M 1 ��A�F ON��e- � � -+�I' � )'A � ����I)�)�' /�1'�B� �$) ��-�� �e),/ � )� 1T-T/( ��N�� Ci1+ �E/K)��*.�) C /� �1+� A�)DN� OF�/�)2A F

/�1�'*)0/�)2A� �I) ��� -T/ / � )(19��) �I'� � N ��F�/ A��B.�/( �1+� � - F��%��* � F�� C C � ��-�F��� /t-�� � )TA�) C � -�.) �() �E/�\- � �B) +�1 A / F@A) F�� �r/ �<��" � F�- �\) / � )@A�) C � -�.) �() �E/ �\- � �i) �3/ � )�-GCJCEA�1GCEA �-T/�) Ci- A�/81 +(/ � )F ON��I- �.1+�E/�)��T/ � � &� . � )�-�A / � )&)��*.�) C /� G1��*A�) N� OF�/�)2A��K-��I'8����� . � )�-�A / � )��6�t/ A�-GC � � /' ��/ � )��1�-�/� � N � CB1� �i/�F/�-T/��JF A�) N� OF�/�)2A2M

? � /�)2A �I-T/( �\) � �� �*1 ��.�1 � � ' /���A � 1��Q/ � ) ) �*.)DCB/( �1+�Z) �e-�� � ) � / F�F�1 / � -�// � )�F ON��e- � OF � /N*) �I)'A-�/t)�' � / � )_�LAGF�/ C � -*.�)�� 1 A �*1 �Q.1 � � ' �JF�)�� ? � ��'A- A� A�1 ��/( �I) F /�1 � -+�I' � )v/ � )) ��.�)DCB/( �1���F +�1�A �*1 ��M�$)'A) F - F ��) � )0/t1+� ��1�-�/� � N � CB1� �i/ ) ��.�)DCB/( �1�� � -+�I' � )2A6+T1�A ? ?TM��X1�AZ'�)�(1���F�/ A-�/� �1+�

C��A CB1 F�) F��� / -�F F�� �()GF(/ � -�/$) ��.�)DCB/( �1���F�-�A�)�.�- �JF�)�' � �l'*1 � � � ) � CEA�)�. OF �1+��-�A / � � )0/� G. � �F�/ A �i.0/( �1���F�� ��� 1 F�) /�-�ADN�)0/ A�)DN� OF�/�)2A F,- A) F CB)�. � )�'� �&/ � ) ��1T/G/t1�� � � / F 1t+ / � ) ��F�/ A��B.�/( �1+�$M��/K- � F�1&'*1T) F �I1T/ � -+�I' � )�? ? � 9 � �X; � M ��� 1T-T/( ��N�� CB1� �E/& ��F�/ A �i.0/( �1���F2M��v1T'� � .�-T/( �1���1 +�/ � )) ��.�)DCB/( �1�� � -��e' � )'A�+�1 A -+� �T/ � ��N �JF�) +�� �& OF � ) +�/$-�F -��>) �*)2A�. OF�) +�1 A&/ � )@A�)�-*'*)'A2M� 1 � ��'*)�� �� /t) � � �I)�)�' / � ) ? ? � 9 � �X; ? A. � /t)�.0/ ��A) -��I' � ��F�/ A��B.�/( �1�� � )�/ 9 ) +�)'A) �I.�)��Z-�� �i- ��MW4\�U�3���J=IDaDb�U=K1)gR�S �1. ��V4aDU1.�R��=\ *S�ID[ R�S ��. ��V4aDU��R4[�K4H��4[ R�S ���V=ID[DU ��[ N�R��=\=��

S�ID[ S��

\DK?S�ID[�W1)����KDJY\,)�R�S �4I�J�b ^�a�. ��V4aDU ^�a�*��=I���.�R�S ��. ��V4aDU?*��\DK?S�ID[�W1)�� WDb�J��DR d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�34WDb4J��<R?*��\DK?S�ID[�W1)�� \���V ��� d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�3=\��4V �83���U4J4a?*��\DK?S�ID[�W1)�� \���V ��[ d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�3=\��4V �834[DJfS(b�*��\DK?S�ID[�W1)�� S�S�K d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�3�S�S�K�* �\DK?S�ID[�W1)�� S(R4K d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�3�S(R=K�* �\DK?S�ID[�W1)�� S(V4K d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�3�S(V=K�* �\DK?S�ID[�W1)�� W4\�R4[DJ4[ d ^ ��0 ���=I���.�R��=\�/�0�R���3�R4b12lR�b�34R�R 2"R�R�34W4\���b(V�� �12%W=\�S�I<[�2"R4R�3�W4\�R=[DJ=[�*��

]�N�-DJ=IDaDb�U \�U=IDa?S�I� U ���U=\D[?S(V�I�R N�]WDV4K )�S d ���yS c4d ���uS E�E *

��J=IDaDb�U�3�U � �=\�)%ODR��Y\�/(0�R���3�R(b12"R4b�34R�R12lR�R�3=W4\ ��b�V�� �12%W4\�S�ID[1.�SD*��

]�N 9�b�U�J4K � ��S�[ S�IM[���U WDb�V�J4[?S�I�D/Y\�V�S�ID[ R4[DJ4[4H�R{KDU��?S(R4[DU4K N�]R��=\�/�0�R���3�R�b12%R�b�3�R�R 2"R�R�34W�\���b4V�����2%W=\�S�ID[�2lR�R�3=W4\fR4[DJ=[{O�d A � ��? ���

]�N�7DU�/�U=I�J���b�Uu[���U [�KDJ=\ ��J=IDaDb�U4K N�]R�S �4I�J�b )�R�S ��.6W4\�U�3���J=IDaDb(U4K�*��

®�Ì

Page 63: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� ��� ��� � �

��J=IDaDb�U�3�U ��Y\�)lW4\�S�ID[ .6I *R4[�K4H��4[ W4\ 3�S�ID[�3���b�V � � N4W4\�S�ID[I�S�ID[ I=��

S�ID[ ��V4aDU1.�[I�H�I�R�S �4I�U4a3S�ID[ N4W�KI�

]�N���KDU�J4[ [���U WDb�V�J4[?S�I�D/=\�VfS�I<[ KDU��?S(R4[DU4K R�J � U J4KDU�J J�R3J=I,S�ID[DU��DU4K J4K�KDJ4L N�]]�N�����U U ���U=\D[?S(V=I KDU��?S(R4[DU4KDR{J4KDU W�K�+���- [��DKDV=H��� W�K�+��4-3N�]W�K3dMO�W4\�S�ID[D/�0(R�R�3=W4\�R=[DJ�[I�S�W )"W�K�+�ID- d�d �?*

KDU4[4HDK4I=�

\DK?S�ID[�W1)�� U ��=\D^�a d ^ ��0 ����.6I9._W�K�+�ID-�*����V4aDU d W�K�+�ID- 0�0 ����S�W ) ��V4aDU O � � ��?*e\DK?S�ID[�W1)��uS�I�U �DJ��4[���*��S�W ) ��V4aDU O � � ��0?*e\DK?S�ID[�W1)��FV � U4K�WDb�V�����*��U�b�R�U S�W ) ��V4aDU O � � ��?�*e\DK?S�ID[�W1)���H�IDaDU4K�WDb�V�����*��U�b�R�U S�W ) ��V4aDU O � �� �?*e\DK?S�ID[�W1)��uS�I � J�b�S�a V=\���*��U�b�R�U S�W ) ��V4aDU O � � ���?*e\DK?S�ID[�W1)���a?S � �DL3TDU4KDV���*��U�b�R�U S�W ) ��V4aDU O � � � ��*e\DK?S�ID[�W1)���H�I�S�`�\�b�U=`�U=ID[�U4a���*��\DK?S�ID[�W1)����=I��4*��

]�N � V4K U �DJ=`�\�b�Uy\�HDK4\�V�R�U�R V=I�b4L�r�R�U4[ [DJ4K��DU4[ KDU��?S(R4[DU4K [DV �12�� N�]]�N �DJ4K4I�S�I� 7�7�7 ����S(R J�R�R=H�`�U�R J�/ �D/�7 � 5�9 ��2�� aDV=H���b�U�/=\DKDU ��S(RfS(VYI S�I�R4[�K4H��4[?S�V=I 76N�]]�N��DV=H R���V=H�b4a KDU�J�b�b4L ����U�� � [���U R=H���/�V=\���V4aDU S�I [���U3U ���U=\D[?S(VYI KDU��?S(R4[DU4K�.PN�]]�N3J=IDa [DJ�S(b�V4K [���U3J��4[?S(V=IB��U4KDU [DV [���U U ���U=\D[?S�I� S�I�R4[�K4H��4[?S(VYI N�][Md3W�K�+�ID- O � � ��WI�W�K�+%[DN�4- d ���W�K�+%[DN� E ��- d ���

]�N 9�b�U�J4K U ���U=\D[?S(V=I KDU��?S(R4[DU4K N�]W�K�+�ID- d ���

� � � � � ���% � % ��� �

+jwF��w5{}��wKo�s�v$wjs���n�x�n�s�x1o�z�m>{}z(wa�1�Ywy��npwyxYtaw:q��1��s�����{}v$v�wy��o9m>{M��w���np��wyx �,s��� jmC� um�:� ��� 02�m>{}ojx1s�zj�Ywywyx«�~wy�1��{�t�w:q@�C�$�P�Bs��jxCu1v$wF��n�ty{��Y �s������� ��� npo5qCwa§>x�n�z~wy�p���,s��� jn �M{���q¢o:¡9x1s�z5�Ywy��npx1x�wy��o#s��\ty{�o~u>{����1�~s����a{�v�v$wy�~o:�@»jo�uY{��p�p��>wys��1�pw5 jm�s {}��w#m1w:{M�Cnp�p�enpxCz�s�xCu1v$wy�~n�ty{��9 �s����«{}��w\x1s�z�mY{�t~��wy�Kz<�C�Ywyo:�#ljm1wy�¹{��~wve{�z~m1wyv@{�z�n�tan�{}x1o:¡�o�tanpwyxCz�npo~z�o:¡9s�� wyx1��npx1wywy�~o:�@ljm1wy�� j{�xCzKz�s�qCs�ty{���tau1��{}z�nps�x1oM¡�x1s�zz���n�t~�C�@�>s�n�xCz~wy�Kve{�x�n���u1��{�z�nps�x1o:� um�'� �6� 02� ! ortas�x1o�z~��u>taz~o5{��~w5v�s��~w�s��C�Lnps�u1orz~seu�o�w�¡ jm1np��w¤wy��wFx«o�npv$����wj����s�����{}v$o�n�x@��z~wyx>q@z~s5�YwK§>�p�pw:q  jn�z~m@z���n�t~�Co:� �� � um�'� �6� 02� nporq1{�x���wy�~s�u1o¤z�s\u1o~w�¡1�1u�zrx1s�zr{�orq1{}x1��wy�~s�u1oK{�or�K�Y¦1s��jn�x�o�z�{}x>taw�¡�v$s�o�z

um�:� ��� 02� t�s�v$��n��pwy�~oKm>{M��w\o~u1�1o�t���np�1z5t~m1w:t~�Cnpx1��{}o5{�x¹s��1z�nps�x�¡� jm1np�pw � m>{M��w5x1wF��wy�wyx>tas�u1xCz�wy�~w:q�{#�ºtas�v��1np��wF�( jnpz�m@z~m1npo��,w:{�z~u1��w��fljm1wK¨�ª¤­ � o�z�{}x>q1{}��q��,s��f�Bu1x>taz~n�s�x�1��s�z�s�z<�C�Ywyor jnp�p�Y��np��wK� {}xewMqC��wKs���wF� um�:� ��� 02� n�x@�>{}��{}v$wyz~wy�(v�npo�ve{}z�t~m#wy���~s��:� �� ��ljm1wy�~w�npo${ �©{}����w«�>s1qC�Ps}�  �wy�p�rz~wyo�z~w:qºve{}z�m1wFve{�z~n�ty{����>{�t~��{}��wyo@{M��{�np��{��1�pw#�,s��

um�:� ��� 02� ¡�z�m>{}ze{��~w�x�s�z@��wyz«{M��{}n���{}�1�pw$npx �"xT�,s��@wa�>{}v$�1�pw@z�m1w � ²«­1³ �>{�t~��{���w��+js� �wy��wy�M¡1z~m1npojo�npz�u>{}z�nps�x�npojn�v��1��s��Cnpx1�¤�,s��|�K� �� � � x$o~z�u>q¢n�wFo�qCs�x1w {�zr����{M� �±wyo�wM{���t~m'¡�z�m1wF�$�Bs�u1x>q npz(z~sLs��*F ON��� � .�-+�E/ � �r�ps�x1��wy�T�,s��z�m1wynp�K�1�~s����a{�v�v$wy�~ojz�s$�pw:{}��x¹� {�x>q�z�m�w5xCu1v\�Ywy�rs}�(wy�~��s��~o ��wFx1wy��{}z�w:q�npx�t�s¢q¢n�x��n�x@� ´<{�ojs��1�>s�o�w:q z�s um�:� ��� 02� µ9 j{�ojv\u>t~m$m�n���m1wy�M� �

®Le

Page 64: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � �W�� � ��� � � ��� � �+� � ��� �

� ��� npo#m>{��aq¹z�s�s���z�npv$n �yw�¡�wyo~�>w:t�n©{}�p���¹n��rz~m1w@�1��s�����{}v$v�wy�Kve{���wyoK�,u�����u1o~wes}���"! owa�1�1��wyo~o�np�Cnpz<�L�9ªjwy �wy�r� �,w:{}z�u1�~wyo¤´,�pnp��w�z�m1w�½}¾}Ä��?� ��wF�L �s��aq#wyz�tFµ({}x>q#x1wy �o~s��,z< j{��~wz�w:t~m1x1s��ps����${}��w npv��1��s��Cnpx1�Kz�m1wKo~n�z~u>{�z~nps�x'� �� ��­Cs�v$w ´Bs���q1µ�npv$����wFv$wyxCz�{}z�nps�x�ofs��(��o�z�np�p�'mY{M��wKz�sCs$v@{�xC�#o��Co�z~wyv qCwF�>wyxYqCwyxCz {�o<��>w:t�z�o ´Bw�� �>�9�~s�u1x>q�u1�@s��rqCs� jx$ jm1wFx�qCnp�Cn©q¢n�x�� x1wy�C{�z�np��w�npxCz�wF��wy�~o�µy� ���m1wyz~m1wy�js��(x1s�z(z~m1wro~ jnpz�t~m$z~s��7npo( �s��~z�mC jm1np�pwj jnp���YqCwy�Ywyx>q�s�x� jm1wyz�m�wy�jnpz�o �u�n��~�Co

s�u�z< (wynp��m\z�m1w¤�>wyx�wa§>z�o¤s���m>{M�Cnpx1� ��v�s��~w(v�s¢q¢wy��x �#q1{�za{Kz<�C�1npx1�5{�xYq$tas�xLz~��s��>o~z���uYtaz�u1�~wyo:����� �"H$ ��sCwyo {\�ps�x1�� |{M��z�s@��wFv$s��Cnpx1�5z~m1w �u�n��~�Cor�1u1z¤�,s��rz~m1w5z~npv$wK�>wFn�x�� um�'� ��� 02� npo�1�~s��>{}�1�p�«v$s���w �Ys��~z�{�����w\{�xYq« jnp�p�9��u1x�� {}o�z~wy� s�x�o�u��>wy�atas�v��1u1z~wy��o  jnpz~m1s�u1zKz< �w:{��Cnpx1�Y�d¤x�z�m�wes�z�m1wF�$m>{}x>q um�:� ��� 02� ve{M���Yw«m>{��aqCwy��z�s¹ve{}npxLza{�npx'¡9{�x>q7npz\npo${��>sCs��\§>z\z~s{��p��s���npz~m1v$oKz�mY{�z\{���w��>wFo�z\wa�1�1�~wyo�o~w:qP jnpz�m7z<�L�Ywyo\v�s���w\npxC��s��p��w:q�z�m>{}xJxC��qCnpv$wFx1o�nps�xY{��{��~��{M�Co:� ��m1wFx �1¾����@�1Ã}ÄIdJPr�Yw:tas�v�wyoftas�v�v$s�x1�1��{�taw�¡F�>wy�~m>{���ofz�m1wrq¢w:tanpo�nps�x� jn��p�C�Yw(w:{}o�npwy�z�s\v@{���w��

G � ;T<2<�-�� 8 G � 6�� 6<;Z� /?6��2 �

­Cwyw@z~m1w � ? ; ?BA1 N�A�- � � )'A F�� �� �'*)�2se�4rn�����s�uJnpxCz�wyxYqJqCs�n�x���z~m1npo5s�x +¤¶ v@{�t~m1npx1wyoM��juYqCn �{�x1��wyv$v�wy�1´<Ã�ÄE_�DM¿C¿FD��#>M¿�DL½9Á = D�µ�v$wFxLz~nps�x1o9o�s�v$wj��wyx1wy�a{����Ys�npxCz�ofz~m>{�zj{��~wr �s���z~mx1s�z�npx1�@� �É �j¦1s���z��a{�x\u1o~wyor{#tas��pu1v�x5 jnpo�w¤o�z~s���{}��wKs��'v@{�z~��n�tawyof jm�n��pwK�Jo~z�s���wyojz~m1wyv ��s� P jnpo�w��ljm1npo�v�w:{�x�orz�mY{�zK jm1wyx���s�u� j{�xCzrz~s@�>{��~o�w${�ve{}z���n����,��s�v���s�u�� �T�<�1�~s����a{�v�z~sz�m1w��,s���z��a{�x7��s�u�z�npx1w$��s�u7v\u1o�z z~��{}x1o��Ys�o~w«z�m1w�ve{}z���n��¹npxJ��s�u1�#�1��s�����{}v��>wa�Bs���wwyxCz�wy�~n�x��Jz�m�w«��s�u1z�npx1w��id±��tas�u���o�w�¡r{�xC�Js�u1z���u1z\�,�~s�v o~u>t~m {���s�u1z�npx1w�v\u1o�z#�>wz���{}x1o��Ys�o~w:q«{}�L{�npx'�� �r��s�u�s�v�npzrz�m�n�o#o�z~wy�'¡9z~m1wyxJ����s��Y{��1�p�«��s�u1� ����s�����{}v  jnp�p�f�~u1xP´,�Yw:ty{}u1o�w@npz m>{}oq1{�za{ z~s$tas�v��1u1z�w¤s�x>µ���u1zjnpzj jn��p�Y��wyx�wy��{}z�w  j�~s�x1�${}x1o� �wy��oM�� � ��s�u@m>{M��w�z~m1w5¦�s��~z���{}x@o�s�u���taw\tas1qCw\´Bs��({�xC�$�~s�u1z~npx1w:µ�z�m�wyx«s�x@o~s�v$wK�1��{}z<�,s���v$o��s�u�ve{M�ru�o�wrtas�v$�1np�pwy��q¢n��~w:taz~n���wyofo~�>w:t�n �B�Lnpx1�Kz~m>{�z9z�m�wr¦1s���z��a{�x5t�s�v$��n��pwy��v\u1o�z�u1o�w��s� � jn�o~wfo�z~s��a{���w���­Cs�v$w��1��{�z<�Bs���v�o>o~u1�1�Ys��~z'z�m�wyo�wjqCnp��w:t�z�np��wyoM�<+js� �wy��wF�' j{�z�t~mKs�u�z jn�z~m$z~m1npo(n�����s�u@ty{��p�Yz�m1wKo�{}v$w¤��s�u�z�npx1wj�B��s�v {�x1s�z�m1wy�r¦�s��~z��a{�x$�~s�u1z~npx1w l ����s�����{}v��

Ì���S(s�u1�\¦�s���z~��{}x t�s�v$��n��pwy��ve{M��{�q1qP{�xJu�x>qCwy�~o�tas���w�z�s¹z�m�we�~s�u1z~npx1w@x>{�v�w\n�x7z�m1wo��Cv\�>s���za{��1�pw���+jwyxYtawrnpx z~m1wrty{��p�pnpx1���T�<�1�~s����a{�v l ��s�u1z�npx1w9��s�u#v\u1o�z9{�q1q#{jz~��{�np�pnpx1�u1x>qCwy�~o�tas���w!&bd¤z�m�wy�� jnpo�w#z�m�w �psL{�q¢wy�j jnp���'t�s�v$���©{}npx${��Ys�u1zr{}xeu�x>qCwa§>x�w:q@o��Cv\�Ys��<�+js� �wy��wy�M¡�t�m�w:t~�e��s�u1�Ktas�v��1np�pwy�f�Bs��jz�m�n�oM�r¦�s��jwa�>{�v��1�pwrz~m1w5¦�s���z~��{}x�tas�v��1np�pwy�(s�x'¨ R±��K²«­�o��Co�z~wyv$o(q¢sLwFo ªVd¤l·{�q�q5{¤z��a{�np�pnpx1�ju1x>qCwF��o�t�s���w�´,z~m1wy��w¤ |{}z�t~m s�u1z9 jn�z~mz�m1w¤� {�tazjz�m>{}zjz�m1w�'¨ R±� ¦�s��~z��a{�x«tas�v��1np�pwy�fz��a{�x1o~��{�z�wForwy��wy���Cz�m�n�x��\n�x@u1���>wy�aty{�o~w:µy�

e��j¦1s���z��a{�x¹�>{}o�o~wyo\npz�o ��{}��n�{��1�pwyoK�C����wa�,wF��wyx>t�w��¹ljm1npo v�w:{�x1o�z�m>{}z ��s�uJ²«»r­Cl���np��w{�qC�~wyo�o~wyoKn�x���s�u1�rty{��p�pnpx1�5�T�<�1��s����a{�v��

¯Y� �J{�z�t~m#s�u1z9wyo~�>wMtan�{��p�p�  jnpz�m C ÂC¾CÃ��Co {}x>q A¢¾ E = Â#DEoM�'²«{}��wjo�u���wjz�mY{�zfz~m1wjo�n �ywjs}�>z�m1w��{���n�{}�1�pwrnpx$z~m1w5ty{}���pnpx1� ����s�����{}v¥npojn�qCwyxCz�n�ty{}��z�s\z~m1wKo�n �yw npx@z�m1w ¦�s��~z���{}x@��s�u�z�npx1w��ljm1npo\n�o\w��¢z~��wyv�wy�p�Jnpv$�Ys��~z�{}xLz#s�xPv@{�t~m1npx1wyo# jnpz�mP�pn�z~z��pw@wyx>qCn�{}x·�C�Cz�w@s���qCwy�~npx1�>�¶�{}��o~n�x��${ C ÂC¾Cà �@´<�T� �~s�u1z~npx1w:µjz~s�{9�AD�ÃC ] ��´<¦1s���z~��{�xYµ�xLu�v\�>wy�� jnp�p��x1s�zj��wyx1wy�a{�z�w­ � � �1u�zj��np��w¤ j��s�x��\��wyo~u1�pz�o�{}ojz�m1w q1{}z�{#npo��>{��~o�w:q@ j�~s�x1���p�L�

� � :Z� ;���-�� 8 � � -�� � �� I 2 � ���

ljm1wKx1wy �wyo~zr��wF��o�nps�xes}�fz�m1nporqCs1tau1v�wyxCzr´<¶�s�o�z~o�ta�~np�1z�{}x>q@³��yl � R�µjnpoj{M��{�np��{��1�pw� Ëf� C ��À

®�¯

Page 65: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

ELÄ�>\mBH C ��À ��U@�B= C ��À|Á DMÄ1Å�Á�½�Ã}¿jÁ Ã�½9Á E _� Ã}¿�DseÃ}Ä>¾�Ä�B�¿>¾ EF�u Ã#���\[1¾ �EA s3J&�@DMÄBA�E��@D?�A>\A MC ��ÀIHº½\AP¿�>��C½C ��ÀIH = >MÄ>à ��BC ��ÀIHPÅAD?� ÂC¾JU D � $ ÁBÀF�9Á �C ��ÀIHPÅAD?� ÂC¾JU D � $ Á ��F>Ã��C ��ÀIH1� E�>?�

� drxKz~m1w � � �r�Cn�{(» �r³#mCz�z~�'� lLl  j j ��<m'� wyx1�Y�Çty{�v�� {�t�� u1� l m1wy�p� l qCs1tau1v\wyxCz�{}z�nps�x l qCs1tao~s�u1�ataw l npx>q¢wa�'� mCz~v$�

� =;92;: <�� ;Z� �$� ��6�� ��� � � ��6K �-���� �

� � � � � �'� � � � � � �� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0

S�ID[ V4a�a1)�S�ID[ I�H�`���U4K�*��]�N KDU4[4HDK4I � S�W I�H�`���U4K3S(R3U � U=I9.�V4[���U4K��?S(R�UuKDU4[4HDK4I � N�]S�W ) )%I�H�`���U4KD]�?*�N�ud�d I�H�`���U4K�*

KDU4[4HDK4I ���U�b�R�U

KDU4[4HDK4I ���

S�ID[ `�J�S�I�)�*��S�ID[MS��

S d ���\DK?S�ID[�W1)���V=a�a )"^�a?*�dM^�a��=I���.�S ."V=a�a )�SD*(*��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0

� V�S�a ��S�I�J4K�L1)%H�IfR�S �=I�U=a S�ID[ I�H�`���U4K�*��]�N \DK?S�ID[ aDU���S�`�J�b �I�H�`���U4K �S�I ��S�I�J4K�L N�]H�I�R�S �4I�U4a S�ID[ \�V��DU4K�3�V4W�3 ��\�V��DU4K�3�V4W�3�=d � �]�N � S�IDa [���U ��KDU�J4[DU�R4[ \�V��DU4K V4W ����S ���MS(R=I�[ `�V4KDU

[���J=I [���U I�H�`���U4KN�]����S(b�U )%\�V��DU4K�3�V4W�3�4c4duI�H�`���U4K�*

S�W )%\�V��DU4K�3�V4W�3 �N�(0=I�H4`��fU4K�*�DKDU�J �I�

U�b�R�U\�V��DU4K�3�V4W�3 4d4\fV��DU=K�3(V4W�3 �N ��

]�N�;DV�� \DK?S�ID[ V=HD[ [���U a?S �?S�[DR N�]����S(b�U )%\�V��DU=K�3(V4W�3 �0 �?*��

S�W1)_I�H�`���U4KD]=\�V��DU4K83�V4W�3�ud�d ��*��\DK?S�ID[�W1)�� ����*��I�H�`���U4K d I�H�`���U4K / \�V��DU4K�3�V4W�3 ��

U�b�R�U\DK?S�ID[�W1)���� ��*��

®Lf

Page 66: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

\�V��DU4K�3�V4W�3�4d=\�V��DU4K83�V4W�3�(]��� \DK?S�ID[�W1)����=I���* �

S�ID[ `�J�S�I�)�*��H�I�R�S �4I�U4a S�ID[ S��

S�d ��0 ���\DK?S�ID[�W1)���^4a S�I ��S�I�J4K�LMS(R.��.�SD*����S�I�J4K�L1)�SD*��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0� V�S�a ��J�R�U )%H�I�R�S �4I�U=a S�ID[ I�H�`���U4K�.6H�I�R�S �4I�U4a S�ID[ ��J�R�U?*��]�N /�K?S�ID[�pI�H�`���U4K j[DV J3R=\�U���S�W?S(U4a ��J�R�U N�]H�I�R�S �4I�U4a S�ID[ \�V��DU4K�3�V4W�3 ��J�R4U��\�V��DU4K�3�V4W�3��DJ�R(U4d ���]�N � S�IDa [���U ��KDU�J4[DU�R4[ \�V��DU4K V4W ��J�R�U !����S ��� S(R=I�[ `�V4KDU

[���J=I [���U I�H�`���U4KN�]����S(b�U )%\�V��DU4K�3�V4W�3��DJ�R�U(c4dyI�H�`���U4K�*��

S�W )%\�V��DU4K�3�V4W�3 ��J�R(U�N��DJ�R(U�0=I4H�`���U4K�*�DKDU�J �I�

U�b�R�U\�V��DU4K�3�V4W�3 ��J�R(U4d4\DV��<U4K�34V4W�3���J(R�U4N���J(R�U��

]�N�;DV�� \DK?S�ID[ V=HD[ [���U a?S �?S�[DR N�]����S(b�U )%\�V��DU=K�3(V4W�3 ��J4R�U�0 �?*��

\DK?S�ID[�W1)���^ ��a���. I�H�`���U4KD]=\�V���U4K�3�V4W83��DJ�R�UD*��I�H�`���U4K d I�H�`���U4K / \�V��DU4K�3�V4W�3���J(R�U N )%I�H�`���U4KD]=\�V��DU4K83�V4W�3��DJ�R�UD*��\�V��DU4K�3�V4W�3���J4R�U=d4\�V��DU4K�3�V�W�3��DJ�R4U�]��fJ�R4U��

\DK?S�ID[�W1)����=I���* �

S�ID[ `�J�S�I�)�*����J�R�U )X0 �1.��*����J�R�U )���� �1.>0?* �

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0 aDU4W?S�I�U /�7 � <�: � ]�N 94KDU�J4[DU J�b�S(J�R�U�RyWDV4K �3J=IDa � N�] aDU4W?S�I�U ;�6�;�/�7 � <�: �

S�ID[ I�H�`���U4KDR1+���� � �4-��

� V�S�a `�J4K ��3=`�H�b4[DS�\�b4U�R )�S�I<[ I�H�` *��

]�N 5�U4[ J�b�b3U�b�U=`�U=ID[DR ����S ���3KDU=\DKDU�R�U=ID[u`�H�b4[?S�\�b�U�R{V4W I�H�` [DV�;�6�;�/�7 � <�: N�]S�ID[ `�H�b4[?S�\�b�U d I�H�` N�������S(b�U )%`�H�b4[?S�\�b�U{c ��� � �?*��I�H�`���U4KDR1+�`(H�b4[�S�\Db�U4-{d ;�6�;�/�7 � <�:I�`�H�b4[?S�\�b�Uud3`�H�b4[?S�\�b�U E I�H�`=�

®�®

Page 67: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

S�ID[ �DU4[�3=I�U ��[�3=\<K?S�`DU )�S�ID[uI�H�` *��]�N W?S�IDa [���U I�U ��[ \DK?S�`�U I�H�`���U4K J4W�[DU4K �I�H�`� N�]S�ID[ J=I�R��DU4KI�J=I�R��DU4K d3I�H�` E �������S(b�U )%I�H�`��DU4K<R1+"JYI�R��DU4K(- d�d ;�6�;�/�7 � <�:�*��J=I�R��DU4K�d J=I�R��DU4K E ���S�WQ)�J=I�R��DU4K d�d ��� � �?*�DKDU�J �I�

KDU4[4HDK4I J=I�R��DU4KI�

`�J�S�I�)�*��S�ID[MS��S�ID[ I�U ��[�3=\DK?S�`�U��

]�N 5�U4[ J�b�b [���U U�b�U=`�U=ID[DR [DVB/�7 � <�:�2"N�]WDV4K1)�S�d ����S(c ��� � ��� S E4E *��I�H�`���U4KDR1+�S�-{d /�7 � <�:I�

]�N �3J=IDa � J4KDU=I�[ \DK?S�`�U1.�R�V R�U4[ I�H�`���U4KDR1+��4- J=IDa I�H�`���U4KDR1+���-{[DV WDJ�b�R�U N�]I�H�`���U4KDR1+��4- d ;�6�;�/�7 � <�:I�I�H�`���U4KDR1+���- d ;�6�;�/�7 � <�:I�

I�U ��[�3=\DK?S�`�Uyd ��aDV��`�J4K ��3=`�H�b4[?S�\�b�U4R )�I�U �([�3=\�K?S�`�U?*��I�U ��[�3=\DK?S�`�Uud �DU4[�3=I�U ��[�3=\<K?S�`DU )�I�U �([�3Y\DK?S�`�U?*��

�����S(b�U )%I�U �4[�3�\DK?S�`�U{c ��� � �?*��

]�N /�K?S�ID[ V=HD[3[���U3S�IDa?S ��U�R V4W U�b�U=`�U=ID[DR ����S ��� J4KDU R4[?S(b�b R�U4[3[DV /�7 � <�: N�]WDV4K1)�S�d ����S(c ��� � ��� S E4E *S�WQ)%I�H�`���U4KDR1+�S�-{d�d /�7 � <�:�*\DK?S�ID[�W1)��e^�a ��.�SD*��

U �?S�[1) �?*��

� � � � � �'� � � � � � �� S�ID[ `DLDR4[�K�=`�\�) �(V=I�R=[ ����J4KMN�R ��. ��V=I�R4[ ����J4K N�R�?*��

����S(b�U )�N�R � E�E d�N�R E�E *�

� S�ID[ ����J�R�U��S�W )�R �DU�� 04d �?*������J�R�U d ��V=\DL�34K?S ���<[ E W4H�I��4[?S(V=I=�

U�b�R�U����\D[�K d ��\D[�K E ����H�I���3��DL�[DU�R �����J�R�U d ��V=\DL�3�b�U4W�[ E W4H�I��4[?S(V=I=�

®Lq

Page 68: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

� ����J4K N�R4[�K���DK1) �(V=I�R=[ ����J4KDN R4[�K�.eS�ID[ �?*�����S(b�U )�N�R4[�KG7d � � �*��S�W )�N�R4[�K d�d �?*

KDU4[4HDK4IMR4[�KI�U�b�R�U

R4[�K E�E � KDU4[4HDK4I ;�� @�@��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0

����J4K N �DU4[�3�R4[�K?S�I� ) � ��J4K R4[�K�+%-�*�

\DK?S�ID[�W1)�� � I�\(HD[ J R4[�K?S�I��r ��*��KDU4[4HDK4I �DU4[DR )�R4[�K�*��

`�J�S�I�)�*��S�ID[ aDU���KDU�U�R������J4K R���J�b�U��S�ID[ KDU4[4HDK4I 3 � J�b�H�U������J4K R4[�K?S�I��+���� ��4-������S(b�U )���*��\DK?S�ID[�W1)��/�b�U(J�R�Uy[�L4\�U3S�I J R4[�K?S�I� b�S��DU ��93V4K � � � �=I���*��\DK?S�ID[�W1)��V�DR�U ��V=ID[�KDV�b�/�9y[DV �4H�S�[��=I���*���DU4[�3�R4[�K?S�I��1)gR4[�K�S�I���*��KDU4[4HDK4I 3 � J4b=HfU dMR�R���J=IDW1)�R4[(K?S�I���.V��^�a(^� ��.%O(aDU��4KDU4U�R1.jODR���J�b�U?*��S�W )"KDU4[4HDK4I 3 � J�bYH�U 7d ?*��\DK?S�ID[�W1)������U=KDU lR{J `�S(R4[DJ �DU S�IMLDV=HDKMS�I�\�HD[�2 ��K�L3J��DJ�S�I92 �=I���* ���V=ID[?S�I�H�U��

S�W )�)uR���J�b�U d�d�W �* i�iu)�R���J�b�U{d�d� � �*�*\DK?S�ID[�W1)���^DR S(R ^�a�9��=I���."R4[�K�S�I���.4)()"a�U���K<U�U�R4/�� ?*�N �?*�]�1?* �

U�b�R�US�W )�)uR���J�b�U d�d � �* i�iu)�R���J�b�U d�d� 9 �*�*

\DK?S�ID[�W1)���^DR S(R ^�a � �=I���."R4[4K?S�I ��.y)"aDU���KDU�U�R�N�1D*�] � E � ?*��U�b�R�U��

\DK?S�ID[�W1)��V��IDJ���b(U [DV aDU4[DU4K4`�S�I�U ����U4[���U4K LDV=HM[�L4\�U4a 93V4K � �=I���*��\DK?S�ID[�W1)����K4L J��DJ�S�I92 �=I��4*��

� �l� � � �'� � � � � � �� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0 S�I���b=HDaDU{c=`�J4[��92���0

]�N ����S(R � U4KDR�S(V=I V4W [���U \DK?S�`�U�Ry\DKDV���KDJ=` [DJ �DU�R J=I V=\D[?S(V=I�J�bJ4K��4H�`�U=ID[ W�KDV=` [���U ��V=`�`�J=IDa b�S�I�U12 �DU���J=H�R�U S�[ H�R�U�R R ��K�[1)�*S�[ I�U�U4aDR [���U `�J4[���R b�S �DKDJ4K�L�2

N�]

aDU4W?S�I�U /�7 � <�: � ]�N 94KDU�J4[DU J�b�S(J�R�U�R WDV4K �3J=IDa � N�] aDU4W?S�I�U ;�6�;�/�7 � <�: �

®Ln

Page 69: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

aDU4W?S�I�U 2�: � ��� @���3�7 ��; ��: ��� � �S�ID[ `�J �4\DK?S�`�U��S�ID[ N=I�H�`���U4KDR��S�ID[ KDJ=I�DU��

� V�S�a H�R�J��DU ) � V�S a�*��\DK?S�ID[�W1)���H�R�J��DU r6\DK?S�`�U +�`�J ��-��=I���*��

]�N 5�U4[ J�b�b3U�b�U=`�U=ID[DR ����S ���3KDU=\DKDU�R�U=ID[u`�H�b4[?S�\�b�U�R{V4W I�H�` [DV�;�6�;�/�7 � <�: N�]� V�S�a `�J4K ��3=`�H�b4[DS�\�b4U�R )�S�I<[ I�H�` *��S�ID[ `�H�b4[?S�\�b�U d I�H�`=�����S(b�U )%`�H�b4[?S�\�b�U E I4H�` c4d3KDJ=I�DU?*��`�H�b4[?S�\�b�U d `�H�b4[?S�\�b�U E I4H�` �I�H�`���U4KDR1+�`�Hfb4[?S�\�b4U4-�d ;�6�;�/�7 � <�:I�

��

]�N W?S�IDa [���U I�U ��[ \DK?S�`�U3S�IM[���U KDJ=I�DU J4W�[DU4K �I�H�`�nN�]S�ID[ �DU4[�3=I�U ��[�3=\<K?S�`DU )�S�ID[uI�H�` *��S�ID[ J=I�R��DU4KI�J=I�R��DU4K d3I�H�` E �������S(b�U )%I�H�`���U4KDR1+%J=IDR��DU�K�- d�d ;�6�;�/�7 � <�:�*�

J=I�R��DU4K�d J=I�R��DU4K E ���S�WQ)�J=I�R��DU4K d�d `�J �4\DK?S�`�U?*�DKDU�J �I�

KDU4[4HDK4I J=I�R��DU4KI�

`�J�S�I�)�S�ID[ J4K���1. ����J4K N�J4K�� � +%-�*��S�ID[MS��S�ID[ I�U ��[�3=\DK?S�`�U��

]�N � W `�V4KDU [���J=I � J4K��B��J�R ��U�U=I �?S � U=IQ.eWDb�J�� J=I U4K�KDV4K N�]S�WQ)�J4K��� 0 ?*��H�R�J��DU )�*��U �?S�[1)���*��

]�N � W V=I�U3J4K��B��J�R ��U�U=I �?S � U=I9.P[�K�L [DV KDU�J4a S�[ J�R3J=I S�ID[DU��DU4K)�R�R���J=IDW KDU4[4HDK4I�Ru[���U I�H�`���U4K V4W R=H�����U�R�R4W4H�b4b4L R���J=I�I�U4a3S�[DU=`�R?*

N�]S�WQ)�J4K��� d�d ?*��

S�W )�R�R���J=IDW1)�J4K�� � + ��-�.X��^�a���.O�KDJYI��U?*M7d ��*KDJ=I�DU d 2�: � ��� @���3�7 ��; ��: �

U�b�R�UKDJ=I�DU d 2�: � ��� @���3�7 ��;���:I�

`�J �4\DK?S�`�Uud R ��K�[ )"KDJ=I�DU?*��

]�N � I�R4[DU�J4a V4W J3W?S��DU4a R�S�TDU J4K�KDJ4L�.P`�J�b�b�V�� R�V=`�U R=\�J���U N�]I�H�`���U4KDR{d )�S�ID[DN?*_`�J�b�b�V�� ) )"KDJ=I�DU E ��*�N{R�S�TDU�V4W )�S�ID[�*�*��

]�N 5�U4[ J�b�b [���U U�b�U=`�U=ID[DR [DVB/�7 � <�:�2"N�]WDV4K )�S�d ����S(c4KDJ=I��DU ��S E(E *

® Ê

Page 70: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

I�H�`���U4KDR1+�S -�d�/�7 � <�:I�

]�N �3J=IDa � J4KDU=I�[ \DK?S�`�U1.�R�V R�U4[ I�H�`���U4KDR1+��4- J=IDa I�H�`���U4KDR1+���-{[DV WDJ�b�R�U N�]I�H�`���U4KDR1+��=-{d.;�6�;�/�7 � <�:I�I�H�`���U4KDR1+���-{d.;�6�;�/�7 � <�:I�

I�U ��[�3=\DK?S�`DUud ��aDV��`�J4K ��3=`�H�b4[DS�\�b4U�R )%I�U���[�3Y\DKDS�`�U�*��I�U ��[�3=\DK?S�`fU d �DU4[�3=I�U ��[�3�\DK?S�`�U )%I�U���[�3=\DKDS�`�U�*��

�����S(b�U )%I�U �([�3=\�K?S�`�U{c4d `�J �4\DK?S�`�U?*��

]�N /�K?S�ID[ V=HD[3[���U3S�IDa?S ��U�R V4W U�b�U=`�U=ID[DR ����S ��� J4KDU R4[?S(b�b R�U4[3[DV /�7 � <�: N�]WDV4K )�S�d ����S(c4KDJ=I��DU ��S E(E *S�WQ)%I�H�`���U4KDR1+ S�-4d�d /�7 � <�:�*

\DK?S�ID[�W1)���^4a��YI���."SD*��

U �?S�[1) �?*��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0 aDU4W?S�I�U ;���< ��:�7�9�6���;�� ���3]�N [���U I�H�`���U4K V4W I�H�`���U4KDR N�]S�ID[ `�J�S�I�)�*�]�N 7DU�J4a ��� I�H�`���U4KDRuW�KDV=` J W?S(b�U ��J�b�b�U4a�aDJ4[DJ 6N�]S�ID[ I�H�`���U4KDR1+>;���< ��:�7�9�6���;���-I���� @�: N4W4\=�S�ID[MS .�KDU4[4HDK4I 3 � J�bYH�U �WDb�V�J4[ [DV4[DJ�b������J4K b�S�I�U1+���� �4- �

W4\Md WDV=\�U=I�)���aDJ4[�J��?.��K ��*��S�W )"W4\ d�d ;�� @�@?*��

W4\DK?S�ID[�W1)�R�[�aDU=K�K1.��9(J=I�IDV4[ V=\�U=I aDJ4[DJ jWDV4K3KDU�J4a?S�I��2 ��LDU12 �=I���*��U �?S�[1)���*��

]�N�7DU�J4a [���U I�H�`���U4KDR S�I N�]WDV4K1)�S�d ����S(c�;���< ��:�7�9�6���;��I��S E�E *��S�WQ)"W��DU4[DR )�b�S�IDU1. ��� � .%W4\�*�d�d ;�� @�@?*��W4\DK?S�ID[�W1)�R�[�aDU=K�K1.�:�IDa V4W W?S(b�U KDU�J�����U4a [DV�V U�J4KDb4L�2 ��LDU12 �=I���*��U �?S�[1)���*��

KDU4[4HDK4I 3 � J�b�H�Uyd R�R���J=IDW1)�b�S�I�U .��^�a���. I�H�`���U4KDR E SD*��S�WQ)"KDU4[4HDK4I 3 � J4b=HDU 7d ��*��W4\DK?S�ID[�W1)�R4[�a�U4K4K�.� 9�J=I4I�V�[ \�J4KDR�U b�S�I�U ^�aMV4W aDJ4[DJ (2 ��LDU12 �=I���.�S E ��* �U �?S�[1)���*��

W��b�V�R�U )"W4\ *��

]�N�;DV�� ��J�b��=H�b�J4[DUu[���U [DV4[DJ�b N�][DV4[DJ�b4d �12����WDV4K1)�S�d ����S(c�;���< ��:�7�9�6���;��I��S E�E *��

[DV4[DJ�b4d�[DV4[<J�b E I�H4`���U�KDR1+ S�- � \DK?S�ID[�W1)�����DUu[DV4[DJ�b3S(R ^�2��4W�2 ����U J � U4KDJ��DU S(R ^�2��4W��=I���.

[DV4[DJ�b1.%[DV4[DJ4b�]�;���< ��:�7�9�6��;��?*��

qLr

Page 71: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0 S�I���b=HDaDU{c�R4[�K?S�I��2���0 aDU4W?S�I�U � � 2�9�6���;�� ��� aDU4W?S�I�U < ��4�� � 2�@�:�; ����-� �

`�J�S�I�)�*�]�N 5�V4K�[ [���U W?S�KDR4[ ��� H�S�aDR S�I [���U \�J�R�R��DV4K�a W?S(b�U N�]����J4K H�S�aDR1+�� � 2�9�6���;���-1+�< ��4�� � 2�@�:�;�����-4-I�����J4K N��=\D[�KI���� @�: N4W4\=�S�ID[MS .�KDU4[4HDK4I 3 � J�bYH�U �WDb�V�J4[ [DV4[DJ�b������J4K b�S�I�U1+���� �4- �

W4\Md WDV=\�U=I�)���]�U4[���]Y\�J�R(R���a���.X��K��4*��S�W )"W4\ d�d ;�� @�@?*��

W4\DK?S�ID[�W1)�R�[�aDU=K�K1.��9(J=I�IDV4[ V=\�U=I l]�U4[��]=\�J�R�R���a WDV4K KDU�J4a?S�I��2 ��LDU12 �=I���*��U �?S�[1)���*��

]�N�7DU�J4a U�J���� V4W3[���U W?S�KDR4[ [DU=I b�S�I�U�R S�ID[DV [���U lb�S�I�U nJ4K�KDJ4L�27DU=\�b�J���U [���U W?S�KDR4[ (r �DLMJ � � (2 9�V=\DL [���U KDU�R=H�b4[?S�I�[�K4H�I���J4[DU4a R4[�K?S�I�3S�ID[DV [���U H�S�aDR J4K�KDJ4L

N�]WDV4K1)�S�d ����S(c � � 2�9�6 ��;��I��S E�E *�S�WQ)"W��DU4[DR )�b�S�IDU1. ��� � .%W4\�*�d�d ;�� @�@?*��W4\DK?S�ID[�W1)�R�[�aDU=K�K1.�:�IDa V4W W?S(b�U KDU�J�����U4a [DV�V U�J4KDb4L�2 ��LDU12 �=I���*��U �?S�[1)���*��

�=\D[�K d R4[�K���DK1)�bfS�I�U . (r �* �S�WQ) �=\D[�K d�d ;�� @�@?*��W4\DK?S�ID[�W1)�R4[�a�U4K4K�.� 54[�K�J=I �DU b�S�I�U3S�I�l]�U4[��]=\�J�R�R���a (2 ��LDU12 �=I���*��U �?S�[1)���*��

N��=\D[�K d� � � ��R4[�K4I��=\DL1)%H�S aDR1+ S�-1."b�S�I�U1. < ��4�� � 2�@�:�;�����-?*��

]�N 5�U�U [���U �DR�V4K�[{`�J=I3\�J��DU WDV4K J=I U �4\�b�J=I�J4[?S(VYI V4W [���U WDV�b�b�V��?S�I�12;DV4[DU [���J4[ R4[�K�=`�\ aDV�U�R=I�[ \DKDU���S(R�U�b4Lu`�J4[��� [���U `�J=I \�J��DU lRKDU �4H�S�KDU=`�U�ID[DR .nR�V LDV=H3`�J4L �DU4[ J��DJ4K4I�S�I� `�U�R�R�J��DU V=I ��V=`�\�S(b�S�I��

N�]�DR�V4K�[1)�) � V�S�aDND*_H�S�aDR1. )�R�S�TDU�34[�* � � 2�9�6���;���. < ��4�� � 2�@�:�; ����- .�R4[�K�=`�\ *��

]�N�/�K?S�ID[ [���U R�V4K�[DU4a b�S(R4[ N�]WDV4K1)�S�d ����S(c � � 2�9�6 ��;��I��S E�E *�

\DK?S�ID[�W1)���^<R��=I���. H�S�aDR1+�S�-�*��

� S�I���b=HDaDU{c�R4[�a?S(V12���0 S�I���b=HDaDU{c�R4[�aDb�S �92���0 aDU4W?S�I�U � � ��@�:�3�5 ��� : � �

q É

Page 72: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � � E� �l� � � �+� $�.� W���i���+� � � 8��

aDU4W?S�I�U < ��4�3�5���7�3�@�:�; ��? aDU4W?S�I�U :�<�/���� )�/ ��*

[�L4\�U4aDU4W R4[�K4H��4[ 3�U=ID[�K�L �S�ID[ � J�b=H�U��R4[�K4H��4[ 3�U=ID[�K�L N=I�U ��[I�����J4K R4[�K�+� �4-I� :4ID[�K�LI�

����J4K R4[�K�+�< ��4�3�5���7�3�@�:�;�-I�

]�N 94KDU�J4[DU J=I J4K�KDJ4L V4WMU�b�U=`�U=ID[DR V4W [�L4\�U :4ID[�K�L N�]:4ID[�K�L N4[DJ���b�U1+>� � ��@�:�3�5 ��� :�-I�

S�ID[ \DKDV���U�R�R ) ���fJ4K N�R4[�K�*��S�ID[ � J�b=H�U d �������S(b�U )�N�R4[�K�*��

� J�b=H�U d � J�b=H�U N )�N�R4[�K�*��R4[�K E�E �

KDU4[4HDK4I � J�b=H�U��

����J4K N �DU4[�3�R4[�K?S�I� ) � ��J4K R4[�K�+%-�*�

\DK?S�ID[�W1)�� � I�\(HD[ J R4[�K?S�I���=I���*��KDU4[4HDK4I �DU4[DR )�R4[�K�*��

S�ID[B��J�R��DW4I�) ����J�K N�R4[�K�*��S�ID[ [DV4[DJ�b d ���S�ID[MS������S(b�U )�S dMN�R4[�K E�E *

[DV4[DJ�b E d S��KDU4[4HDK4I [DV4[DJ�b ^ � � ��@�:�3�5 ��� : �

� V�S�a R�U4[�34[DJ���b�U�3 � J4b=HDU�R ) � V�S�a�* �]�N R�U4[ J�b�b [���U U=ID[�K?S(U�R S�IM[���U [DJ���b�U [DV�;�� @�@N�]S�ID[MS��WDV4K )�S d ����S(c�� � ��@�:�3�5 � � :I� S E(E *

[DJ���b�U1+�S�- d ;�� @�@��

� V�S�a R�U4[�3�U=ID[�K�L ) :4I�[�K4L N�U=ID[�K�L�. ����J4K N�R4[�K�*��R4[�K�=\DL1)�U=ID[�K4LD/40�R4[(K�."R=[�K�*��U=ID[�K�LD/�0 � J�b=HDUud3\DKDV���U�R�R )�R=[�K?*��

:4ID[�K�L N��4KDU�J4[DU�3�J=I 34U=I�[�K�L ) � VfS�a�*��:4ID[�K�L N�U=ID[�K�LI�U=ID[�K�L d ) :4ID[�K�LDN?*�`�J�b�b�V�� )�R�S�TDU4V4W ) :4ID[�K�L�*�*��KDU4[4HDK4I U=ID[�K�LI�

q�Ì

Page 73: ANSI C for Programmers on UNIX Systems Tim Love Cambridge ...

�+�V � ������������� ������������� � ��� ��������

`�J�S�I�)�*��S�ID[ ��H�� �DU4[I�S�ID[ � J�b=H�U��

R�U4[�34[DJ���b�U�3 � J4b=H�U(R )�*��

]�NB��R�U �DU4[�3�R4[�K?S�I� KDU=\�U�J4[DU4aDb�L�2 � V4K U�J����MR4[�K?S�I��r"/H�R�U [���U���J�R�� W4H�I��4[?S(V=I [DV W?S�IDa [���U R4[�K?S�I� lR U=ID[�K�LS�IM[���U [DJ���b�U12

N�]����S(b�U ) �DU4[�34R4[4K?S�I �1)�R=[�K�*�*��S�W )?7 R4[�K�=`�\�)�R4[�K1.� U=IDa���*4*��

\DK?S�ID[�W1)��/(KDV��4KDJ�` U=IDaDU4a��=I��4*��U �?S�[1) �?*��

��H�� �DU4[ d���J�R��DW4I�)�R4[(K�*��� J�b=H�U d3W?S�IDa�3�U=ID[�K�L )"O1)%[DJ ��b�U + �4H�� �<U4[�-?*�.nR4[�K�*��\DK?S�ID[�W1)����DJ4b=H�U{V4WMc4^DR�03S(R ^�a��=I���."R4[�K1. � J�b=HfU?*��

� � /g��6����� ��V�

2 É 4 Ë�{�x>{}m>{�x'¡YËf�a{�qC�C¡1{�xYq ¼ s���{�x��<� � )(; .:1T1����f¨Kq1qCnpo�s�x �¹wyo��pwy�C¡ É:Ê nLn1�2ÇÌ�4 ­1{}v\u1wy�>¶9� +¤{��~�1npo�s�x${}x>q �Ku1�\³f�C­Cz~wywy�pw���;(��? 9 ) +�)'A) �I.�)��v-+� �B- ���'¶9��wFxLz~n�taw:+r{��p�<¡É:Ê nLq��

2se�43+jwF j��wFz�z<��¶9{�t~��{��aq«��s�v��>{�xC�C� � ? ; ? A�1GN�A-�� �()'A F � �� �'*)F¡ ÉMÊ�Ê Ì��2 ¯�4�¨r�p�pwyx � ��+js��p��u��'�<� � )(; ; 1�� CB-�� �1��1�f¶ ��wyxCz�n�taw+r{}�p� ¡ É:Ê nLq��2sf�4 ²«{}��� +±s��~z�s�x��B? 1�A�/�-�� � ) ; � 1 +�/ � - A)F�f¶9��wyxCz~n©t�wa� +¤{��p�<¡ É:Ê�Ê r1�2Ç®�4 ËT��n�{�x � ��°¤wy�~x1np��m>{}x {}x>q�¶9� ¸Y�'¶9��{�u1��wy�:� � � )�K � )�() �i/ F�1 +�? A�1GN�A-�� � ��N�� / � � )y�²«t�� ��{M �� +jnp�p� ¡ É:Ê qLn��

2sq�4 ËT��n�{�x � ��°rwF��x1np��mY{�xJ{�xYq ¼ wyx1x�n�o#²¹� �jnpzat�m�n�w�� � � )v; ? A1 N�A- � � ��N��X-�� N �B- N*)� )�.�1��I' K '+ /( �1��1�f¶ ��wyxCz�n�taw�� +¤{��p�<¡ � x>t��p¡ ÉMÊ nLn��

2sn�4�¨rxYqC��wy  °¤sCwyx1np�Y�"; �EA�-GC!F$-��e'�?' / +�- �� Fy��¨�q1qCnpo~s�xC���¹wyo��pwy�C¡ É:Ê n Ê �2 Ê 4�¸>�Ǧ��>°¤s���o�m�{�x>q@³f� ¸Y��� {��~��wyz~z:���6-T/�- �B/ A �i.0/�� A�)GF�� ? � N*1�A / � �TF�� -��e'�?BA1 N�A�- � �B/�� � )

�JF ��Nl;f�9¶f­��P��°¤wyxCz:¡ ÉMÊ ngn1�2 É r�4 ­Cz~wy��wkd¤u>{}�p��npx1w��L? A�-*.0/� G.- �; ? A1 N�A- � � ��N���d&! �jwynp�p�p��� ¨ro~o�s1tan�{�z~wyo:¡ � x>t��2 É�É 4 ��np�p�pn©{}v + �>¶ ��wyo~o:¡'ËT��n�{�x«¶9�Y¦'��{}x1x1wy�~�L¡Y­1{�u1��¨5��l�wFu1��s���o~�C�L¡1{}x>q ��np���pn�{�v l � fwyz<�z�wF���pnpx1�>��� � � KK9 �\; ?�l9�K�; � ?LK�� ���;(�(� � )(? A0/R1 + � . �) �E/� � . ; 1 ��C��/� ���NE�1�j{}v\��1�~n©q¢��w »jx1np��wy��o~n�z<�@¶9��wFo�o:¡ ÉMÊ nLn��

2 É Ì�4 R+e}¸ É�É � ¼ ��{E�,z|¶ ��s��Ys�o~w:q@¨¤v$wy�~n©tF{�x«ªr{}z�nps�x>{}�V­¢z�{�xYq1{��aq\�Bs�� � xC�,s���v@{�z�nps�x�­C�Co~z�wyv�o ¶9��s����a{�v$v�npx1�«³'{�x���u>{}��w��K� l9w:t~m1x�n©tF{��:�jwy�Ys��~z@R�e�¸ É�É l nLn É fgn1¡f¨Kªr­ � ¨�t~�ta�~w:qCnpz�w:q�­Cz�{}x>q1{}��qCof��s�v�v$npz�z~wyw�¡'R+e � xC�,s���ve{}z�nps�x ¶9�~s1tawyo�o~npx1�5­C�Co�z~wyv$oM¡ ¼ w:t�wyv\�>wF�É:Ê nLn��

qLe