old-www/LDP/lpg/node1.html

288 lines
20 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<!--Converted with LaTeX2HTML 96.1-c (Feb 29, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
<HTML>
<HEAD>
<TITLE>Contents</TITLE>
<META NAME="description" CONTENT="Contents">
<META NAME="keywords" CONTENT="lpg">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<LINK REL=STYLESHEET HREF="lpg.css">
</HEAD>
<BODY LANG="EN">
<A NAME="tex2html142" HREF="node2.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME="tex2html140" HREF="lpg.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME="tex2html134" HREF="lpg.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html143" HREF="node2.html">1 The Linux operating </A>
<B>Up:</B> <A NAME="tex2html141" HREF="lpg.html">e</A>
<B> Previous:</B> <A NAME="tex2html135" HREF="lpg.html">e</A>
<BR> <P>
<P><H2><A NAME="SECTION00100000000000000000">Contents</A></H2>
<UL>
<LI> <A NAME="tex2html144" HREF="node2.html#SECTION00200000000000000000">1 The Linux operating system</A>
<LI> <A NAME="tex2html145" HREF="node3.html#SECTION00300000000000000000">2 The Linux kernel</A>
<LI> <A NAME="tex2html146" HREF="node4.html#SECTION00400000000000000000">3 The Linux libc package</A>
<LI> <A NAME="tex2html147" HREF="node5.html#SECTION00500000000000000000">4 System calls</A>
<LI> <A NAME="tex2html148" HREF="node6.html#SECTION00600000000000000000">5 The ``swiss army knife'' ioctl</A>
<LI> <A NAME="tex2html149" HREF="node7.html#SECTION00700000000000000000">6 Linux Interprocess Communications</A>
<UL>
<LI> <A NAME="tex2html150" HREF="node8.html#SECTION00710000000000000000">6.1 Introduction</A>
<LI> <A NAME="tex2html151" HREF="node9.html#SECTION00720000000000000000">6.2 Half-duplex UNIX Pipes</A>
<UL>
<LI> <A NAME="tex2html152" HREF="node10.html#SECTION00721000000000000000">6.2.1 Basic Concepts</A>
<LI> <A NAME="tex2html153" HREF="node11.html#SECTION00722000000000000000">6.2.2 Creating Pipes in C</A>
<LI> <A NAME="tex2html154" HREF="node12.html#SECTION00723000000000000000">6.2.3 Pipes the Easy Way!</A>
<LI> <A NAME="tex2html155" HREF="node13.html#SECTION00724000000000000000">6.2.4 Atomic Operations with Pipes</A>
<LI> <A NAME="tex2html156" HREF="node14.html#SECTION00725000000000000000">6.2.5 Notes on half-duplex pipes:</A>
</UL>
<LI> <A NAME="tex2html157" HREF="node15.html#SECTION00730000000000000000">6.3 Named Pipes (FIFOs - First In First Out)</A>
<UL>
<LI> <A NAME="tex2html158" HREF="node16.html#SECTION00731000000000000000">6.3.1 Basic Concepts</A>
<LI> <A NAME="tex2html159" HREF="node17.html#SECTION00732000000000000000">6.3.2 Creating a FIFO</A>
<LI> <A NAME="tex2html160" HREF="node18.html#SECTION00733000000000000000">6.3.3 FIFO Operations</A>
<LI> <A NAME="tex2html161" HREF="node19.html#SECTION00734000000000000000">6.3.4 Blocking Actions on a FIFO</A>
<LI> <A NAME="tex2html162" HREF="node20.html#SECTION00735000000000000000">6.3.5 The Infamous SIGPIPE Signal</A>
</UL>
<LI> <A NAME="tex2html163" HREF="node21.html#SECTION00740000000000000000">6.4 System V IPC</A>
<UL>
<LI> <A NAME="tex2html164" HREF="node22.html#SECTION00741000000000000000">6.4.1 Fundamental Concepts</A>
<UL>
<LI> <A NAME="tex2html165" HREF="node23.html#SECTION00741100000000000000">IPC Identifiers</A>
<LI> <A NAME="tex2html166" HREF="node24.html#SECTION00741200000000000000">IPC Keys</A>
<LI> <A NAME="tex2html167" HREF="node25.html#SECTION00741300000000000000">The <TT>ipcs</TT> Command</A>
<LI> <A NAME="tex2html168" HREF="node26.html#SECTION00741400000000000000">The <TT>ipcrm</TT> Command</A>
</UL>
<LI> <A NAME="tex2html169" HREF="node27.html#SECTION00742000000000000000">6.4.2 Message Queues</A>
<UL>
<LI> <A NAME="tex2html170" HREF="node28.html#SECTION00742100000000000000">Basic Concepts</A>
<LI> <A NAME="tex2html171" HREF="node29.html#SECTION00742200000000000000">Internal and User Data Structures</A>
<UL>
<LI> <A NAME="tex2html172" HREF="node30.html#SECTION00742210000000000000">Message buffer</A>
<LI> <A NAME="tex2html173" HREF="node31.html#SECTION00742220000000000000">Kernel <TT>msg</TT> structure</A>
<LI> <A NAME="tex2html174" HREF="node32.html#SECTION00742230000000000000">Kernel <TT>msqid_ds</TT> structure</A>
<LI> <A NAME="tex2html175" HREF="node33.html#SECTION00742240000000000000">Kernel <TT>ipc_perm</TT> structure</A>
</UL>
<LI> <A NAME="tex2html176" HREF="node34.html#SECTION00742300000000000000">SYSTEM CALL: msgget()</A>
<LI> <A NAME="tex2html177" HREF="node35.html#SECTION00742400000000000000">SYSTEM CALL: msgsnd()</A>
<LI> <A NAME="tex2html178" HREF="node36.html#SECTION00742500000000000000">SYSTEM CALL: msgctl()</A>
<LI> <A NAME="tex2html179" HREF="node37.html#SECTION00742600000000000000">msgtool: An interactive message queue manipulator</A>
<UL>
<LI> <A NAME="tex2html180" HREF="node38.html#SECTION00742610000000000000">Background</A>
<LI> <A NAME="tex2html181" HREF="node39.html#SECTION00742620000000000000">Command Line Syntax</A>
<UL>
<LI> <A NAME="tex2html182" HREF="node40.html#SECTION00742621000000000000">Sending Messages </A>
<LI> <A NAME="tex2html183" HREF="node41.html#SECTION00742622000000000000">Retrieving Messages</A>
<LI> <A NAME="tex2html184" HREF="node42.html#SECTION00742623000000000000">Changing the Permissions (mode)</A>
<LI> <A NAME="tex2html185" HREF="node43.html#SECTION00742624000000000000">Deleting a Queue</A>
</UL>
<LI> <A NAME="tex2html186" HREF="node44.html#SECTION00742630000000000000">Examples</A>
<LI> <A NAME="tex2html187" HREF="node45.html#SECTION00742640000000000000">The Source</A>
</UL>
</UL>
<LI> <A NAME="tex2html188" HREF="node46.html#SECTION00743000000000000000">6.4.3 Semaphores</A>
<UL>
<LI> <A NAME="tex2html189" HREF="node47.html#SECTION00743100000000000000">Basic Concepts</A>
<LI> <A NAME="tex2html190" HREF="node48.html#SECTION00743200000000000000">Internal Data Structures</A>
<UL>
<LI> <A NAME="tex2html191" HREF="node49.html#SECTION00743210000000000000">Kernel <TT>semid_ds</TT> structure</A>
<LI> <A NAME="tex2html192" HREF="node50.html#SECTION00743220000000000000">Kernel <TT>sem</TT> structure</A>
</UL>
<LI> <A NAME="tex2html193" HREF="node51.html#SECTION00743300000000000000">SYSTEM CALL: semget()</A>
<LI> <A NAME="tex2html194" HREF="node52.html#SECTION00743400000000000000">SYSTEM CALL: semop()</A>
<LI> <A NAME="tex2html195" HREF="node53.html#SECTION00743500000000000000">SYSTEM CALL: semctl()</A>
<LI> <A NAME="tex2html196" HREF="node54.html#SECTION00743600000000000000">semtool: An interactive semaphore manipulator</A>
<UL>
<LI> <A NAME="tex2html197" HREF="node55.html#SECTION00743610000000000000">Background</A>
<LI> <A NAME="tex2html198" HREF="node56.html#SECTION00743620000000000000">Command Line Syntax</A>
<UL>
<LI> <A NAME="tex2html199" HREF="node57.html#SECTION00743621000000000000">Creating a Semaphore Set</A>
<LI> <A NAME="tex2html200" HREF="node58.html#SECTION00743622000000000000">Locking a Semaphore</A>
<LI> <A NAME="tex2html201" HREF="node59.html#SECTION00743623000000000000">Unlocking a Semaphore</A>
<LI> <A NAME="tex2html202" HREF="node60.html#SECTION00743624000000000000">Changing the Permissions (mode)</A>
<LI> <A NAME="tex2html203" HREF="node61.html#SECTION00743625000000000000">Deleting a Semaphore Set</A>
</UL>
<LI> <A NAME="tex2html204" HREF="node62.html#SECTION00743630000000000000">Examples</A>
<LI> <A NAME="tex2html205" HREF="node63.html#SECTION00743640000000000000">The Source</A>
</UL>
<LI> <A NAME="tex2html206" HREF="node64.html#SECTION00743700000000000000">semstat: A semtool companion program</A>
</UL>
<LI> <A NAME="tex2html207" HREF="node65.html#SECTION00744000000000000000">6.4.4 Shared Memory</A>
<UL>
<LI> <A NAME="tex2html208" HREF="node66.html#SECTION00744100000000000000">Basic Concepts</A>
<LI> <A NAME="tex2html209" HREF="node67.html#SECTION00744200000000000000">Internal and User Data Structures</A>
<UL>
<LI> <A NAME="tex2html210" HREF="node68.html#SECTION00744210000000000000">Kernel <TT>shmid_ds</TT> structure</A>
</UL>
<LI> <A NAME="tex2html211" HREF="node69.html#SECTION00744300000000000000">SYSTEM CALL: shmget()</A>
<LI> <A NAME="tex2html212" HREF="node70.html#SECTION00744400000000000000">SYSTEM CALL: shmat()</A>
<LI> <A NAME="tex2html213" HREF="node71.html#SECTION00744500000000000000">SYSTEM CALL: shmctl()</A>
<LI> <A NAME="tex2html214" HREF="node72.html#SECTION00744600000000000000">SYSTEM CALL: shmdt()</A>
<LI> <A NAME="tex2html215" HREF="node73.html#SECTION00744700000000000000">shmtool: An interactive shared memory manipulator</A>
<UL>
<LI> <A NAME="tex2html216" HREF="node74.html#SECTION00744710000000000000">Background</A>
<LI> <A NAME="tex2html217" HREF="node75.html#SECTION00744720000000000000">Command Line Syntax</A>
<UL>
<LI> <A NAME="tex2html218" HREF="node76.html#SECTION00744721000000000000">Writing strings to the segment</A>
<LI> <A NAME="tex2html219" HREF="node77.html#SECTION00744722000000000000">Retrieving strings from the segment</A>
<LI> <A NAME="tex2html220" HREF="node78.html#SECTION00744723000000000000">Changing the Permissions (mode)</A>
<LI> <A NAME="tex2html221" HREF="node79.html#SECTION00744724000000000000">Deleting the segment</A>
</UL>
<LI> <A NAME="tex2html222" HREF="node80.html#SECTION00744730000000000000">Examples</A>
<LI> <A NAME="tex2html223" HREF="node81.html#SECTION00744740000000000000">The Source</A>
</UL>
</UL>
</UL>
</UL>
<LI> <A NAME="tex2html224" HREF="node82.html#SECTION00800000000000000000">7 Sound Programming</A>
<UL>
<LI> <A NAME="tex2html225" HREF="node83.html#SECTION00810000000000000000">7.1 Programming the internal speaker</A>
<LI> <A NAME="tex2html226" HREF="node84.html#SECTION00820000000000000000">7.2 Programming a sound card</A>
</UL>
<LI> <A NAME="tex2html227" HREF="node85.html#SECTION00900000000000000000">8 Character Cell Graphics</A>
<UL>
<LI> <A NAME="tex2html228" HREF="node86.html#SECTION00910000000000000000">8.1 I/O Function in libc</A>
<UL>
<LI> <A NAME="tex2html229" HREF="node87.html#SECTION00911000000000000000">8.1.1 Formatted Output</A>
<LI> <A NAME="tex2html230" HREF="node88.html#SECTION00912000000000000000">8.1.2 Formatted Input</A>
</UL>
<LI> <A NAME="tex2html231" HREF="node89.html#SECTION00920000000000000000">8.2 The Termcap Library</A>
<UL>
<LI> <A NAME="tex2html232" HREF="node90.html#SECTION00921000000000000000">8.2.1 Introduction</A>
<LI> <A NAME="tex2html233" HREF="node91.html#SECTION00922000000000000000">8.2.2 Find a Terminal Description</A>
<LI> <A NAME="tex2html234" HREF="node92.html#SECTION00923000000000000000">8.2.3 Look at a Terminal Description</A>
<LI> <A NAME="tex2html235" HREF="node93.html#SECTION00924000000000000000">8.2.4 Termcap Capabilities</A>
<UL>
<LI> <A NAME="tex2html236" HREF="node94.html#SECTION00924100000000000000">Boolean Capabilities</A>
<LI> <A NAME="tex2html237" HREF="node95.html#SECTION00924200000000000000">Numeric Capabilities</A>
<LI> <A NAME="tex2html238" HREF="node96.html#SECTION00924300000000000000">String Capabilities</A>
</UL>
</UL>
<LI> <A NAME="tex2html239" HREF="node97.html#SECTION00930000000000000000">8.3 Ncurses - Introduction</A>
<LI> <A NAME="tex2html240" HREF="node98.html#SECTION00940000000000000000">8.4 Initializing</A>
<LI> <A NAME="tex2html241" HREF="node99.html#SECTION00950000000000000000">8.5 Windows</A>
<LI> <A NAME="tex2html242" HREF="node100.html#SECTION00960000000000000000">8.6 Output</A>
<UL>
<LI> <A NAME="tex2html243" HREF="node101.html#SECTION00961000000000000000">8.6.1 Formatted Output</A>
<LI> <A NAME="tex2html244" HREF="node102.html#SECTION00962000000000000000">8.6.2 Insert Characters/Lines</A>
<LI> <A NAME="tex2html245" HREF="node103.html#SECTION00963000000000000000">8.6.3 Delete Characters/Lines</A>
<LI> <A NAME="tex2html246" HREF="node104.html#SECTION00964000000000000000">8.6.4 Boxes and Lines</A>
<LI> <A NAME="tex2html247" HREF="node105.html#SECTION00965000000000000000">8.6.5 Background Character</A>
</UL>
<LI> <A NAME="tex2html248" HREF="node106.html#SECTION00970000000000000000">8.7 Input</A>
<UL>
<LI> <A NAME="tex2html249" HREF="node107.html#SECTION00971000000000000000">8.7.1 Formated Input</A>
</UL>
<LI> <A NAME="tex2html250" HREF="node108.html#SECTION00980000000000000000">8.8 Options</A>
<UL>
<LI> <A NAME="tex2html251" HREF="node109.html#SECTION00980100000000000000">Output Options</A>
<LI> <A NAME="tex2html252" HREF="node110.html#SECTION00981000000000000000">8.8.1 Input Options</A>
<LI> <A NAME="tex2html253" HREF="node111.html#SECTION00982000000000000000">8.8.2 Terminal Attributes</A>
<LI> <A NAME="tex2html254" HREF="node112.html#SECTION00983000000000000000">8.8.3 Use Options</A>
</UL>
<LI> <A NAME="tex2html255" HREF="node113.html#SECTION00990000000000000000">8.9 Clear Window and Lines</A>
<LI> <A NAME="tex2html256" HREF="node114.html#SECTION009100000000000000000">8.10 Updating the Terminal</A>
<LI> <A NAME="tex2html257" HREF="node115.html#SECTION009110000000000000000">8.11 Video Attributes and Color</A>
<LI> <A NAME="tex2html258" HREF="node116.html#SECTION009120000000000000000">8.12 Cursor and Window Coordinates</A>
<LI> <A NAME="tex2html259" HREF="node117.html#SECTION009130000000000000000">8.13 Scrolling</A>
<LI> <A NAME="tex2html260" HREF="node118.html#SECTION009140000000000000000">8.14 Pads</A>
<LI> <A NAME="tex2html261" HREF="node119.html#SECTION009150000000000000000">8.15 Soft-labels</A>
<LI> <A NAME="tex2html262" HREF="node120.html#SECTION009160000000000000000">8.16 Miscellaneous</A>
<LI> <A NAME="tex2html263" HREF="node121.html#SECTION009170000000000000000">8.17 Low-level Access</A>
<LI> <A NAME="tex2html264" HREF="node122.html#SECTION009180000000000000000">8.18 Screen Dump</A>
<LI> <A NAME="tex2html265" HREF="node123.html#SECTION009190000000000000000">8.19 Termcap Emulation</A>
<LI> <A NAME="tex2html266" HREF="node124.html#SECTION009200000000000000000">8.20 Terminfo Functions</A>
<LI> <A NAME="tex2html267" HREF="node125.html#SECTION009210000000000000000">8.21 Debug Function</A>
<LI> <A NAME="tex2html268" HREF="node126.html#SECTION009220000000000000000">8.22 Terminfo Capabilities</A>
<UL>
<LI> <A NAME="tex2html269" HREF="node127.html#SECTION009221000000000000000">8.22.1 Boolean Capabilities</A>
<LI> <A NAME="tex2html270" HREF="node128.html#SECTION009222000000000000000">8.22.2 Numbers</A>
<LI> <A NAME="tex2html271" HREF="node129.html#SECTION009223000000000000000">8.22.3 Strings</A>
</UL>
<LI> <A NAME="tex2html272" HREF="node130.html#SECTION009230000000000000000">8.23 [N]Curses Function Overview</A>
</UL>
<LI> <A NAME="tex2html273" HREF="node131.html#SECTION001000000000000000000">9 Programming I/O ports</A>
<UL>
<LI> <A NAME="tex2html274" HREF="node132.html#SECTION001010000000000000000">9.1 Mouse Programming</A>
<LI> <A NAME="tex2html275" HREF="node133.html#SECTION001020000000000000000">9.2 Modem Programming</A>
<LI> <A NAME="tex2html276" HREF="node134.html#SECTION001030000000000000000">9.3 Printer Programming</A>
<LI> <A NAME="tex2html277" HREF="node135.html#SECTION001040000000000000000">9.4 Joystick Programming</A>
</UL>
<LI> <A NAME="tex2html278" HREF="node136.html#SECTION001100000000000000000">10 Porting Applications to Linux</A>
<UL>
<LI> <A NAME="tex2html279" HREF="node137.html#SECTION001110000000000000000">10.1 Introduction</A>
<LI> <A NAME="tex2html280" HREF="node138.html#SECTION001120000000000000000">10.2 Signal handling</A>
<UL>
<LI> <A NAME="tex2html281" HREF="node139.html#SECTION001121000000000000000">10.2.1 Signals under SVR4, BSD, and POSIX.1</A>
<LI> <A NAME="tex2html282" HREF="node140.html#SECTION001122000000000000000">10.2.2 Linux signal options</A>
<LI> <A NAME="tex2html283" HREF="node141.html#SECTION001123000000000000000">10.2.3 <EM>signal</EM> under Linux</A>
<LI> <A NAME="tex2html284" HREF="node142.html#SECTION001124000000000000000">10.2.4 Signals supported by Linux</A>
</UL>
<LI> <A NAME="tex2html285" HREF="node143.html#SECTION001130000000000000000">10.3 Terminal I/O</A>
<LI> <A NAME="tex2html286" HREF="node144.html#SECTION001140000000000000000">10.4 Process information and control</A>
<UL>
<LI> <A NAME="tex2html287" HREF="node145.html#SECTION001141000000000000000">10.4.1 <EM>kvm</EM> routines</A>
<LI> <A NAME="tex2html288" HREF="node146.html#SECTION001142000000000000000">10.4.2 <EM>ptrace</EM> and the <EM>/proc</EM> filesystem</A>
<LI> <A NAME="tex2html289" HREF="node147.html#SECTION001143000000000000000">10.4.3 Process control under Linux</A>
</UL>
<LI> <A NAME="tex2html290" HREF="node148.html#SECTION001150000000000000000">10.5 Portable conditional compilation</A>
<LI> <A NAME="tex2html291" HREF="node149.html#SECTION001160000000000000000">10.6 Additional Comments</A>
</UL>
<LI> <A NAME="tex2html292" HREF="node150.html#SECTION001200000000000000000">11 Systemcalls in alphabetical order</A>
<LI> <A NAME="tex2html293" HREF="node151.html#SECTION001300000000000000000">12 Abbreviations</A>
<LI> <A NAME="tex2html294" HREF="node152.html#SECTION001400000000000000000"> About this document ... </A>
</UL>
<P>
<UL><LI> Copyright <BR>
The Linux Programmer's Guide is &#169;&nbsp;1994, 1995 by Sven Goldt <BR>
Sven Goldt, Sachsendamm 47b, 10829 Berlin, Germany <BR>
&lt;<I>goldt</I>@<I>math</I>.<I>tu</I>-<I>berlin</I>.<I>de</I>&gt;. <BR>
Chapter <A HREF="node85.html#vdm">8</A> is &#169;&nbsp;1994, 1995 by Sven van der Meer
&lt;<I>vdmeer</I>@<I>cs</I>.<I>tu</I>-<I>berlin</I>.<I>de</I>&gt;.<BR>
Chapter <A HREF="node7.html#scott">6</A> is &#169;&nbsp;1995 Scott Burkett
&lt;<I>scottb</I>@<I>IntNet</I>.<I>net</I>&gt;.<BR>
Chapter <A HREF="node136.html#mdw">10</A> is &#169;&nbsp;1994, 1995 Matt Welsh
&lt;<I>mdw</I>@<I>cs</I>.<I>cornell</I>.<I>edu</I>&gt;.<BR>
Special thanks goes to John D. Harper &lt;<I>jharper</I>@<I>uiuc</I>.<I>edu</I>&gt;
for proofreading this guide.<BR>
Permission to reproduce this document in whole or in part is
subject to the following conditions:
<OL><LI> The copyright notice remains intact and is included.<LI> If you make money with it the authors want a share.<LI> The authors are not responsible for any harm that might arise
by the use of it.
</OL> <LI> Preface <BR>
This guide is far from being complete.<BR>
The first release started at version 0.1 in September 1994.
It concentrated on system calls because of lack of manpower and information.
Planned are the description of library functions and major kernel
changes as well as excursions into important areas like networking, sound,
graphics and asynchronous I/O. Maybe some hints about how to build
shared libraries and pointers to useful toolkits will later
be included.<BR>
This guide will only be a success with generous help in the form
of information or perhaps even submission of whole chapters.<LI> Introduction <BR>
Once upon a time I installed Linux on my PC to learn more about
system administration. I tried to install a slip server but it didn't
work with shadow and mgetty. I had to patch sliplogin and it worked
until the new Linux 1.1 releases. No one could tell me what had
happened. There was no documentation about changes since the 0.99
kernel except the kernel change summaries from Russ Nelson, but they
didn't help me very much in solving problems.
<P>
The Linux Programmer's Guide is meant to do what the name implies--
It is to help Linux programmers understand the peculiarities of
Linux. By its nature, this also means that it
should be useful when porting programs from other operating systems to
Linux. Therefore, this guide must describe the system calls and the
major kernel changes which have effects on older programs like serial
I/O and networking.
<P>
</UL>
<P>
<HR><A NAME="tex2html142" HREF="node2.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="next_motif.gif"></A> <A NAME="tex2html140" HREF="lpg.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="up_motif.gif"></A> <A NAME="tex2html134" HREF="lpg.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="previous_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html143" HREF="node2.html">1 The Linux operating </A>
<B>Up:</B> <A NAME="tex2html141" HREF="lpg.html">e</A>
<B> Previous:</B> <A NAME="tex2html135" HREF="lpg.html">e</A>
<P><ADDRESS>
<I>Converted on: <BR>
Fri Mar 29 14:43:04 EST 1996</I>
</ADDRESS>
</BODY>
</HTML>