old-www/LDP/LG/issue71/tag/4.html

258 lines
9.7 KiB
HTML

<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<META NAME="generator" CONTENT="lgazmail v1.3F.f">
<TITLE>The Answer Gang 71: Is This a Good Book for Linux Programming?</TITLE>
</HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"
LINK="#3366FF" VLINK="#A000A0">
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<P> <hr>
<CENTER>
<!-- *** BEGIN navbar *** -->
<!-- *** END navbar *** -->
</CENTER>
</p>
<P> <hr>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<p align="center">
<table width="100%" border="0"><tr>
<td align="right" valign="center"
><IMG ALT="" SRC="../../gx/navbar/left.jpg"
WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="middle" border="0"
><A HREF="..//"
><IMG SRC="../../gx/navbar/toc.jpg" align="middle"
ALT="[ Table Of Contents ]" border="0"></A
><A HREF="../lg_answer71.html"
><IMG SRC="../../gx/dennis/answertoc.jpg" align="middle"
ALT="[ Answer Guy Current Index ]" border="0"></A></td>
<td align="center" valign="center"><A HREF="../lg_answer71.html#greeting"><img align="middle"
src="../../gx/dennis/smily.gif" alt="greetings" border="0"></A> &nbsp;
<A HREF="1.html">1</A> &nbsp;
<A HREF="2.html">2</A> &nbsp;
<A HREF="3.html">3</A> &nbsp;
<A HREF="4.html">4</A> &nbsp;
<A HREF="5.html">5</A> &nbsp;
<A HREF="6.html">6</A> &nbsp;
<A HREF="7.html">7</A> &nbsp;
<A HREF="8.html">8</A>
</td>
<td align="left" valign="center"><A HREF="../../tag/kb.html"
><IMG SRC="../../gx/dennis/answerpast.jpg" align="middle"
ALT="[ Index of Past Answers ]" border="0"></A
><IMG ALT="" SRC="../../gx/navbar/right.jpg" align="middle"
WIDTH="14" HEIGHT="45" BORDER="0"></td></tr></table>
</p>
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../../gx/dennis/qbubble.gif" alt="(?)"
border="0" align="middle">
<font color="#B03060">The Answer Gang</font>
<img src="../../gx/dennis/bbubble.gif" alt="(!)"
border="0" align="middle">
</A></H1>
<BR>
<H4>By Jim Dennis, Ben Okopnik, Dan Wilder, Breen, Chris, and the Gang,
the Editors of Linux Gazette...
and You!
<br>Send questions (or interesting answers) to
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a>
</H4>
<p><em><font color="#990000">There is no guarantee that your questions
here will <b>ever</b> be answered. Readers at confidential sites
must provide permission to publish. However, you can be published
anonymously - just let us know!
</font></em></p>
</center>
<p><hr><p>
<!-- endcut ======================================================= -->
<!-- begin 4 -->
<H3 align="left"><img src="../../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Is This a Good Book for Linux Programming?</H3>
<p><strong>From Chris Gianakopoulos
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By John Karns, Faber Fedor
</strong></p>
<P><STRONG>
<IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello Gang,
I've mentioned that I am working on an embedded project that will use
Linux as its kernel. As a result, I am learning to write cool software
for the Linux platform.
</STRONG></P>
<P><STRONG>
The type of stuff that I have to do will be fork()s and exec()s (the "s"
indicates lots of <TT> fork()</TT> and <TT> exec()</TT> invocations), IPC stuff, signals (I
know -- that's IPC stuff, too). and pipes. I know that there will be
slight differences (for example, the <TT> spawn()</TT> function), but now for the
question.
</STRONG></P>
<P><STRONG>
There are lots of good guides (and of course, the man pages). I am also
presently reading a book entitled "Advanced Programming in the Unix
Environment" by Stevens.
</STRONG></P>
<P><STRONG>
Will that Stevens book lead me astray? It really is giving me lots of
good insight (what other insight could there be?), so I hope that you
tell me that it is good reading for learning to create complex software
systems in Linux.
</STRONG></P>
<P><STRONG>
Of course, I will read the man pages and guides, and I expect that some
header file may be in different places (I saw slight differences for
network programming).
</STRONG></P>
<blockQuote>
<IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [J.Karns]
I've seen that book recommended for Linux programming on a LUG list I
subscribe to. Additionally, this one:
</blockQuote>
<blockQuote><BLOCKQuote>
The Design of the Unix Operating System, Pr. Hall, ISBN-0-13-201799-7
Moris J. Bach
</BLOCKQuote></blockQuote>
<P><STRONG>
<IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks for the confirmation. I've got the Bach book and read it years
ago. It is my reference for Unix internals.
I will read the Stevens book just for the sport of it since it applies
to my <A HREF="http://www.freebsd.org/">FreeBSD</A> system. I am happy that it also applies to Linux.
</STRONG></P>
<blockQuote>
<IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Excellent book, IMO. I was re-reading it Friday night (yes, I need a
life
<IMG SRC="../../gx/dennis/smily.gif" ALT=";-)"
height="24" width="20" align="middle"> and still learning new things.
</blockQuote>
<P><STRONG>
<IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I claim to have a life -- my peers don't agree with me when I start to
talk about technical stuff. I'm almost finished with chapter 9 -- the
stuff that talks about session leaders and stuff. Soon I read about
signals -- almost like writing interrupt handlers only a little easier.
</STRONG></P>
<blockQuote>
<IMG SRC="../../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
I don't do the kind of programming that you do, but I think the
combination of the Stevens book and the kernel documentation
(usr/src/linux/Documentation assuming you've installed the kernel
sources) should do you well
</blockQuote>
<P><STRONG>
<IMG SRC="../../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It will be not quite like an embedded project. That's what makes it fun
because it will be more like standard Unix programming (which I have not
yet done). I'll have to deal with such issues as do I run various
servers as daemons? What if I want daemon-to-daemon communication -- do
I use named pipes?
</STRONG></P>
<P><STRONG>
As I learn and discover, I will pass this type of information as 2 cent
tips.
</STRONG></P>
<P><STRONG>
Thanks for that info, Fabor. I will keep that Linux Documentation stuff
in my mind. I know that I ramble whenever I talk about this project
that I am working on. Here's why, though.
</STRONG></P>
<P><STRONG>
When I was doing DSP (digital signal processor) programming, I would ask
myself questions like "I wish that I could use DMA for those A/D
samples." Then, I would turn around and discover that the feature
existed.
</STRONG></P>
<P><STRONG>
Linux is the same way. I'm architecting this system as I were designing
hardware to do the job. You want I/O? Use the messaging IPC. That
allows programming language independence with respect to server
implementation. Linux (and Unix) has all of these cool things that
provide for a concurrent implementation of the system.
</STRONG></P>
<P><STRONG>
And that stability. The things that people can do when they work
together!!
</STRONG></P>
<!-- end 4 -->
<!--startcut ======================================================= -->
<P> <hr> </p>
<!-- *** BEGIN copyright *** -->
<H5 align="center">This page edited and maintained by the Editors
of <I>Linux Gazette</I>
<a href="http://www.linuxgazette.com/copying.html"
>Copyright &copy;</a> 2001
<BR>Published in issue 71 of <I>Linux Gazette</I> October 2001</H5>
<H6 ALIGN="center">HTML script maintained by
<A HREF="mailto:star@starshine.org">Heather Stern</a> of
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6>
<!-- *** END copyright *** -->
<P> <hr>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<p align="center">
<table width="100%" border="0"><tr>
<td align="right" valign="center"
><IMG ALT="" SRC="../../gx/navbar/left.jpg"
WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="middle" border="0"
><A HREF="..//"
><IMG SRC="../../gx/navbar/toc.jpg" align="middle"
ALT="[ Table Of Contents ]" border="0"></A
><A HREF="../lg_answer71.html"
><IMG SRC="../../gx/dennis/answertoc.jpg" align="middle"
ALT="[ Answer Guy Current Index ]" border="0"></A></td>
<td align="center" valign="center"><A HREF="../lg_answer71.html#greeting"><img align="middle"
src="../../gx/dennis/smily.gif" alt="greetings" border="0"></A> &nbsp;
<A HREF="1.html">1</A> &nbsp;
<A HREF="2.html">2</A> &nbsp;
<A HREF="3.html">3</A> &nbsp;
<A HREF="4.html">4</A> &nbsp;
<A HREF="5.html">5</A> &nbsp;
<A HREF="6.html">6</A> &nbsp;
<A HREF="7.html">7</A> &nbsp;
<A HREF="8.html">8</A>
</td>
<td align="left" valign="center"><A HREF="../../tag/kb.html"
><IMG SRC="../../gx/dennis/answerpast.jpg" align="middle"
ALT="[ Index of Past Answers ]" border="0"></A
><IMG ALT="" SRC="../../gx/navbar/right.jpg" align="middle"
WIDTH="14" HEIGHT="45" BORDER="0"></td></tr></table>
</p>
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr>
<CENTER>
<!-- *** BEGIN navbar *** -->
<!-- *** END navbar *** -->
</CENTER>
</p>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->