<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1001983566968171590</id><updated>2011-10-21T03:39:29.531-07:00</updated><category term='processes'/><category term='gdb debugger'/><category term='gcc'/><category term='unix faqs'/><category term='shared memory'/><category term='threads'/><category term='message passing'/><category term='unix programming tools'/><category term='pipes'/><category term='make file'/><category term='basic syntax'/><title type='text'>dvreviews</title><subtitle type='html'>This gives information about unix tips</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-5949391216469572786</id><published>2008-05-08T23:01:00.000-07:00</published><updated>2008-05-08T23:36:09.616-07:00</updated><title type='text'>inter process communicatipn</title><content type='html'>IPC means communication between two processes,&lt;br /&gt;some of ipc's&lt;br /&gt;1. signal&lt;br /&gt;2.pipes&lt;br /&gt;3.named pipes&lt;br /&gt;4.message queues&lt;br /&gt;5. semaphore&lt;br /&gt;6.shared memory&lt;br /&gt;signal:&lt;br /&gt;A signal is a limited form of inter-process communication used in Unix, Unix-like, and other POSIX-compliant operating systems. Essentially it is an asynchronous notification sent to a process in order to notify it of an event that occurred. When a signal is sent to a process, the operating system interrupts the process' normal flow of execution. Execution can be interrupted during any non-atomic instruction. If the process has previously registered a signal handler, that routine is executed. Otherwise the default signal handler is executed.&lt;br /&gt;&lt;br /&gt;The Single Unix Specification specifies the following signals which are defined in &lt;signal.h&gt;:&lt;br /&gt;&lt;br /&gt;SIGABRT - process aborted&lt;br /&gt;SIGALRM - signal raised by alarm&lt;br /&gt;SIGBUS - bus error: "access to undefined portion of memory object"&lt;br /&gt;SIGCHLD - child process terminated, stopped (*or continued)&lt;br /&gt;SIGCONT - continue if stopped&lt;br /&gt;SIGFPE - floating point exception: "erroneous arithmetic operation"&lt;br /&gt;SIGHUP - hangup&lt;br /&gt;SIGILL - illegal instruction&lt;br /&gt;SIGINT - interrupt&lt;br /&gt;SIGKILL - kill&lt;br /&gt;SIGPIPE - write to pipe with no one reading&lt;br /&gt;SIGQUIT - quit and dump core&lt;br /&gt;SIGSEGV - segmentation violation&lt;br /&gt;SIGSTOP - stop executing temporarily&lt;br /&gt;SIGTERM - termination&lt;br /&gt;SIGTSTP - terminal stop signal&lt;br /&gt;SIGTTIN - background process attempting to read ("in")&lt;br /&gt;SIGTTOU - background process attempting to write ("out")&lt;br /&gt;SIGUSR1 - user defined 1&lt;br /&gt;SIGUSR2 - user defined 2&lt;br /&gt;SIGPOLL - pollable event&lt;br /&gt;SIGPROF - profiling timer expired&lt;br /&gt;SIGSYS - bad syscall&lt;br /&gt;SIGTRAP - trace/breakpoint trap&lt;br /&gt;SIGURG - urgent data available on socket&lt;br /&gt;SIGVTALRM - signal raised by timer counting virtual time: "virtual timer expired"&lt;br /&gt;SIGXCPU - CPU time limit exceeded&lt;br /&gt;SIGXFSZ - file size limit exceeded&lt;br /&gt;&lt;br /&gt;2.pipes:&lt;br /&gt;pipes allow communication between two process,one at time.this is uni directional.&lt;br /&gt;for example we have 2 process A &amp;amp; B&lt;br /&gt;A ------------ B&lt;br /&gt;(pipe)&lt;br /&gt;A is writing data to pipe ,after completion writing in pipe,then after B will read from the pipe . that one process at a time .&lt;br /&gt;1 A is writing in pipe then B will read from pipe not both (R/W) at a time&lt;br /&gt;2 B is writing in pipe then A will read from pipe,not both(R/W) at atime&lt;br /&gt;&lt;br /&gt;named pipe:&lt;br /&gt;In &lt;a title="Computing" href="http://en.wikipedia.org/wiki/Computing"&gt;computing&lt;/a&gt;, a named pipe (also &lt;a title="FIFO" href="http://en.wikipedia.org/wiki/FIFO"&gt;FIFO&lt;/a&gt; for its behaviour) is an extension to the traditional &lt;a title="Pipeline (Unix)" href="http://en.wikipedia.org/wiki/Pipeline_(Unix)"&gt;pipe&lt;/a&gt; concept on &lt;a title="Unix" href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; and &lt;a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; systems, and is one of the methods of &lt;a title="Inter-process communication" href="http://en.wikipedia.org/wiki/Inter-process_communication"&gt;inter-process communication&lt;/a&gt;. The concept is also found in &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt;, although the semantics differ substantially. A traditional pipe is "unnamed" because it exists anonymously and persists only for as long as the process is running. A named pipe is system-persistent and exists beyond the life of the process and must be "unlinked" or deleted once it is no longer being used. Processes generally attach to the named pipe (usually appearing as a file) to perform &lt;a title="Inter-process communication" href="http://en.wikipedia.org/wiki/Inter-process_communication"&gt;IPC&lt;/a&gt; (inter-process communication).&lt;br /&gt;&lt;br /&gt;mesage queue:&lt;br /&gt;Two (or more) processes can exchange information via access to a common system message queue. The sending process places via some (OS) message-passing module a message onto a queue which can be read by another process Each message is given an identification or type so that processes can select the appropriate message. Process must share a common key in order to gain access to the queue in the first place&lt;br /&gt;&lt;br /&gt;semaphore: it allows synchronistion between two process.&lt;br /&gt;for example:&lt;br /&gt;If 4 systems connected to 1 printer at that time we are creating 2 semphore for a printer one sem give ' on' other 'off' (1 /0 in machine lang). suppose 1 system is doing printing at that time the 2 give a reqyest to print,then but sem is in on position, then 2 system will be in waiting state. For synchronising between two processe we are using semaphores.&lt;br /&gt;Advantages:&lt;br /&gt;protected, shared variable&lt;br /&gt;counter for resource access synchronisation&lt;br /&gt;operations:&lt;br /&gt;increment counter atomically&lt;br /&gt;wait (until non-null) and decrement atomically&lt;br /&gt;invented by E. Dijkstra&lt;br /&gt;operations P (wait-and-dec) and V (increment), also up and down&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-5949391216469572786?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/5949391216469572786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=5949391216469572786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5949391216469572786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5949391216469572786'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/inter-process-communicatipn.html' title='inter process communicatipn'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-3928650452264645527</id><published>2008-05-08T22:58:00.000-07:00</published><updated>2008-05-08T23:00:40.749-07:00</updated><title type='text'>features of unix</title><content type='html'>1. multi tasking&lt;br /&gt; 2.multi user&lt;br /&gt;  3. more security&lt;br /&gt;  4.muti processing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-3928650452264645527?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/3928650452264645527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=3928650452264645527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/3928650452264645527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/3928650452264645527'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/features-of-unix.html' title='features of unix'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-7502113882950191030</id><published>2008-05-07T06:15:00.000-07:00</published><updated>2008-05-07T06:16:43.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><title type='text'></title><content type='html'>&lt;span style="color: rgb(255, 204, 102);font-size:180%;" &gt;gcc compiler&lt;/span&gt;&lt;br /&gt;The following discussion is about the gcc compiler, a product of the open-source GNU&lt;br /&gt;project (www.gnu.org). Using gcc has several advantages— it tends to be pretty up-todate&lt;br /&gt;and reliable, it's available on a variety of platforms, and of course it's free and opensource.&lt;br /&gt;Gcc can compile C, C++, and objective-C. Gcc is actually both a compiler and a&lt;br /&gt;linker. For simple problems, a single call to gcc will perform the entire compile-link&lt;br /&gt;operation. For example, for small projects you might use a command like the following&lt;br /&gt;which compiles and links together three .c files to create an executable named "program".&lt;br /&gt;gcc main.c module1.c module2.c -o program&lt;br /&gt;The above line equivalently could be re-written to separate out the three compilation&lt;br /&gt;steps of the .c files followed by one link step to build the program.&lt;br /&gt;gcc -c main.c ## Each of these compiles a .c&lt;br /&gt;gcc -c module1.c&lt;br /&gt;gcc -c module2.c&lt;br /&gt;gcc main.o module1.o module2.o -o program ## This line links the .o's&lt;br /&gt;## to build the program&lt;br /&gt;The general form for invoking gcc is...&lt;br /&gt;gcc options files&lt;br /&gt;where options is a list of command flags that control how the compiler works, and&lt;br /&gt;files is a list of files that gcc reads or writes depending on the options&lt;br /&gt;Command-line options&lt;br /&gt;Like most Unix programs, gcc supports many command-line options to control its&lt;br /&gt;operation. They are all documented in its man page. We can safely ignore most of these&lt;br /&gt;options, and concentrate on the most commonly used ones: -c, -o, -g, -Wall,&lt;br /&gt;-I, -L, and -l.&lt;br /&gt;3&lt;br /&gt;-c files Direct gcc to compile the source files into an object files without going&lt;br /&gt;through the linking stage. Makefiles (below) use this option to compile&lt;br /&gt;files one at a time.&lt;br /&gt;-o file Specifies that gcc's output should be named file. If this option is not&lt;br /&gt;specified, then the default name used depends on the context...(a) if&lt;br /&gt;compiling a source .c file, the output object file will be named with the&lt;br /&gt;same name but with a .o extension. Alternately, (b) if linking to create&lt;br /&gt;an executable, the output file will be named a.out. Most often, the -o&lt;br /&gt;option is used to specify the output filename when linking an&lt;br /&gt;executable, while for compiling, people just let the default .c/.o&lt;br /&gt;naming take over.&lt;br /&gt;It's a memorable error if your -o option gets switched around in the&lt;br /&gt;command line so it accidentally comes before a source file like&lt;br /&gt;"...-o foo.c program" -- this can overwrite your source file --&lt;br /&gt;bye bye source file!&lt;br /&gt;-g Directs the compiler to include extra debugging information in its&lt;br /&gt;output. We recommend that you always compile your source with this&lt;br /&gt;option set, since we encourage you to gain proficiency using the&lt;br /&gt;debugger such as gdb (below).&lt;br /&gt;Note -- the debugging information generated is for gdb, and could&lt;br /&gt;possibly cause problems with other debuggers such as dbx.&lt;br /&gt;-Wall Give warnings about possible errors in the source code. The issues&lt;br /&gt;noticed by -Wall are not errors exactly, they are constructs that the&lt;br /&gt;compiler believes may be errors. We highly recommend that you&lt;br /&gt;compile your code with -Wall. Finding bugs at compile time is soooo&lt;br /&gt;much easier than run time. the -Wall option can feel like a nag, but it's&lt;br /&gt;worth it. If a student comes to me with an assignment that does not&lt;br /&gt;work, and it produces -Wall warnings, then maybe 30% of the time,&lt;br /&gt;the warnings were a clue towards the problem. 30% may not sound&lt;br /&gt;like that much, but you have to appreciate that it's free debugging.&lt;br /&gt;Sometimes -Wall warnings are not actually problems. The code is ok,&lt;br /&gt;and the compiler just needs to be convinced. Don't ignore the warning.&lt;br /&gt;Fix up the source code so the warning goes away. Getting used to&lt;br /&gt;compiles that produce "a few warnings" is a very bad habit.&lt;br /&gt;Here's an example bit of code you could use to assign and test a flag&lt;br /&gt;variable in one step...&lt;br /&gt;int flag;&lt;br /&gt;if (flag = IsPrime(13)) {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;The compiler will give a warning about a possibly unintended&lt;br /&gt;assignment, although in this case the assignment is correct. This&lt;br /&gt;warning would catch the common bug where you meant to type == but&lt;br /&gt;typed = instead. To get rid of the warning, re-write the code to make&lt;br /&gt;the test explicit...&lt;br /&gt;4&lt;br /&gt;int flag;&lt;br /&gt;if ((flag = IsPrime(13)) != 0) {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;This gets rid of the warning, and the generated code will be the same&lt;br /&gt;as before. Alternately, you can enclose the entire test in another set of&lt;br /&gt;parentheses to indicate your intentions. This is a small price to pay to&lt;br /&gt;get -Wall to find some of your bugs for you.&lt;br /&gt;-Idir Adds the directory dir to the list of directories searched for #include&lt;br /&gt;files. The compiler will search several standard directories&lt;br /&gt;automatically. Use this option to add a directory for the compiler to&lt;br /&gt;search. There is no space between the "-I" and the directory name. If&lt;br /&gt;the compile fails because it cannot find a #include file, you need a -I to&lt;br /&gt;fix it.&lt;br /&gt;Extra: Here's how to use the unix "find" command to find your&lt;br /&gt;#include file. This example searches the /usr/include directory for all&lt;br /&gt;the include files with the pattern "inet" in them...&lt;br /&gt;nick% find /usr/include -name '*inet*'&lt;br /&gt;/usr/include/arpa/inet.h&lt;br /&gt;/usr/include/netinet&lt;br /&gt;/usr/include/netinet6&lt;br /&gt;-lmylib (lower case 'L') Search the library named mylib for unresolved&lt;br /&gt;symbols (functions, global variables) when linking. The actual name of&lt;br /&gt;the file will be libmylib.a, and must be found in either the default&lt;br /&gt;locations for libraries or in a directory added with the -L flag (below).&lt;br /&gt;The position of the -l flag in the option list is important because the&lt;br /&gt;linker will not go back to previously examined libraries to look for&lt;br /&gt;unresolved symbols. For example, if you are using a library that&lt;br /&gt;requires the math library it must appear before the math library on the&lt;br /&gt;command line otherwise a link error will be reported. Again, there is&lt;br /&gt;no space between the option flag and the library file name, and that's a&lt;br /&gt;lower case 'L', not the digit '1'. If your link step fails because a symbol&lt;br /&gt;cannot be found, you need a -l to add the appropriate library, or&lt;br /&gt;somehow you are compiling with the wrong name for the function or&lt;br /&gt;-Ldir gAldodbsa lt hvea rdiairbelcet.ory dir to the list of directories searched for library files&lt;br /&gt;specified by the -l flag. Here too, there is no space between the&lt;br /&gt;option flag and the library directory name. If the link step fails because&lt;br /&gt;a library file cannot be found, you need a -L, or the library file name is&lt;br /&gt;wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-7502113882950191030?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/7502113882950191030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=7502113882950191030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7502113882950191030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7502113882950191030'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/gcc-compiler-following-discussion-is.html' title=''/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-2834609209488510770</id><published>2008-05-07T06:02:00.000-07:00</published><updated>2008-05-07T06:08:55.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='make file'/><title type='text'></title><content type='html'>&lt;span style="color: rgb(255, 153, 0);font-size:180%;" &gt;&lt;span style="font-style: italic;"&gt;Information about make file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Typing out the gcc commands for a project gets less appealing as the project gets bigger.&lt;br /&gt;The "make" utility automates the process of compiling and linking. With make, the&lt;br /&gt;programmer specifies what the files are in the project and how they fit together, and then&lt;br /&gt;make takes care of the appropriate compile and link steps. Make can speed up your&lt;br /&gt;compiles since it is smart enough to know that if you have 10 .c files but you have only&lt;br /&gt;changed one, then only that one file needs to be compiled before the link step. Make has&lt;br /&gt;some complex features, but using it for simple things is pretty easy.&lt;br /&gt;Running make&lt;br /&gt;Go to your project directory and run make right from the shell with no arguments, or in&lt;br /&gt;emacs (below) [esc]-x compile will do basically the same thing. In any case, make&lt;br /&gt;looks in the current directory for a file called Makefile or makefile for its build&lt;br /&gt;instructions. If there is a problem building one of the targets, the error messages are&lt;br /&gt;written to standard error or the emacs compilation buffer.&lt;br /&gt;Makefiles&lt;br /&gt;A makefile consists of a series of variable definitions and dependency rules. A variable in&lt;br /&gt;a makefile is a name defined to represent some string of text. This works much like&lt;br /&gt;macro replacement in the C pre-processor. Variables are most often used to represent a&lt;br /&gt;list of directories to search, options for the compiler, and names of programs to run.&lt;br /&gt;Variables are not pre-declared, you just set them with '='. For example, the line :&lt;br /&gt;CC = gcc&lt;br /&gt;will create a variable named CC, and set its value to be gcc. The name of the variable is&lt;br /&gt;case sensitive, and traditionally make variable names are in all upper case letters.&lt;br /&gt;While it is possible to make up your own variable names, there are a few names that are&lt;br /&gt;considered standard, and using them along with the default rules makes writing a&lt;br /&gt;makefile much easier. The most important variables are: CC, CFLAGS, and LDFLAGS.&lt;br /&gt;CC The name of the C compiler, this will default to cc or gcc in most&lt;br /&gt;versions of make.&lt;br /&gt;CFLAGS A list of options to pass on to the C compiler for all of your source&lt;br /&gt;files. This is commonly used to set the include path to include nonstandard&lt;br /&gt;directories (-I) or build debugging versions (-g).&lt;br /&gt;LDFLAGS A list of options to pass on to the linker. This is most commonly&lt;br /&gt;used to include application specific library files (-l) and set the&lt;br /&gt;library search path (-L).&lt;br /&gt;To refer to the value of a variable, put a dollar sign ($) followed by the name in&lt;br /&gt;parenthesis or curly braces...&lt;br /&gt;CFLAGS = -g -I/usr/class/cs107/include&lt;br /&gt;$(CC) $(CFLAGS) -c binky.c&lt;br /&gt;The first line sets the value of the variable CFLAGS to turn on debugging information and&lt;br /&gt;add the directory /usr/class/cs107/include to the include file search path. The&lt;br /&gt;second line uses CC variable to get the name of the compiler and the CFLAGS variable&lt;br /&gt;6&lt;br /&gt;to get the options for the compiler. A variable that has not been given a value has the&lt;br /&gt;empty-string value.&lt;br /&gt;The second major component of a makefile is the dependency/build rule. A rule tells how&lt;br /&gt;to make a target based on changes to a list of certain files. The ordering of the rules does&lt;br /&gt;not make any difference, except that the first rule is considered to be the default rule --&lt;br /&gt;the rule that will be invoked when make is called without arguments (the most common&lt;br /&gt;way).&lt;br /&gt;A rule generally consists of two lines: a dependency line followed by a command line.&lt;br /&gt;Here is an example rule :&lt;br /&gt;binky.o : binky.c binky.h akbar.h&lt;br /&gt;tab$(CC) $(CFLAGS) -c binky.c&lt;br /&gt;This dependency line says that the object file binky.o must be rebuilt whenever any of&lt;br /&gt;binky.c, binky.h, or akbar.h change. The target binky.o is said to depend on&lt;br /&gt;these three files. Basically, an object file depends on its source file and any non-system&lt;br /&gt;files that it includes. The programmer is responsible for expressing the dependencies&lt;br /&gt;between the source files in the makefile. In the above example, apparently the source&lt;br /&gt;code in binky.c #includes both binky.h and akbar.h-- if either of those two .h&lt;br /&gt;files change, then binky.c must be re-compiled. (The make depend facility tries to&lt;br /&gt;automate the authoring of the makefile, but it's beyond the scope of this document.)&lt;br /&gt;The command line lists the commands that build binky.o -- invoking the C compiler&lt;br /&gt;with whatever compiler options have been previously set (actually there can be multiple&lt;br /&gt;command lines). Essentially, the dependency line is a trigger which says when to do&lt;br /&gt;something. The command line specifies what to do.&lt;br /&gt;The command lines must be indented with a tab characte -- just using spaces will not&lt;br /&gt;work, even though the spaces will sortof look right in your editor. (This design is a result&lt;br /&gt;of a famous moment in the early days of make when they realized that the tab format was&lt;br /&gt;a terrible design, but they decided to keep it to remain backward compatible with their&lt;br /&gt;user base -- on the order of 10 users at the time. There's a reason the word "backward" is&lt;br /&gt;in the phrase "backward compatible". Best to not think about it.)&lt;br /&gt;Because of the tab vs. space problem, make sure you are not using an editor or tool which&lt;br /&gt;might substitute space characters for an actual tab. This can be a problem when using&lt;br /&gt;copy/paste from some terminal programs. To check whether you have a tab character on&lt;br /&gt;that line, move to the beginning of that line and try to move one character to the right. If&lt;br /&gt;the cursor skips 8 positions to the right, you have a tab. If it moves space by space, then&lt;br /&gt;you need to delete the spaces and retype a tab character.&lt;br /&gt;For standard compilations, the command line can be omitted, and make will use a default&lt;br /&gt;build rule for the source file based on its file extension, .c for C files, .f for Fortran files,&lt;br /&gt;and so on. The default build rule for C files looks like...&lt;br /&gt;$(CC) $(CFLAGS) -c source-file.c&lt;br /&gt;It's very common to rely on the above default build rule -- most adjustments can be made&lt;br /&gt;by changing the CFLAGS variable. Below is a simple but typical looking makefile. It&lt;br /&gt;compiles the C source contained in the files main.c, binky.c, binky.h, akbar.c,&lt;br /&gt;akbar.h, and defs.h. These files will produce intermediate files main.o,&lt;br /&gt;binky.o, and akbar.o. Those files will be linked together to produce the executable&lt;br /&gt;file program. Blank lines are ignored in a makefile, and the comment character is '#'.&lt;br /&gt;7&lt;br /&gt;## A simple makefile&lt;br /&gt;CC = gcc&lt;br /&gt;CFLAGS = -g -I/usr/class/cs107/include&lt;br /&gt;LDFLAGS = -L/usr/class/cs107/lib -lgraph&lt;br /&gt;PROG = program&lt;br /&gt;HDRS = binky.h akbar.h defs.h&lt;br /&gt;SRCS = main.c binky.c akbar.c&lt;br /&gt;## This incantation says that the object files&lt;br /&gt;## have the same name as the .c files, but with .o&lt;br /&gt;OBJS = $(SRCS:.c=.o)&lt;br /&gt;## This is the first rule (the default)&lt;br /&gt;## Build the program from the three .o's&lt;br /&gt;$(PROG) : $(OBJS)&lt;br /&gt;tab$(CC) $(LDFLAGS) $(OBJS) -o $(PROG)&lt;br /&gt;## Rules for the source files -- these do not have&lt;br /&gt;## second build rule lines, so they will use the&lt;br /&gt;## default build rule to compile X.c to make X.o&lt;br /&gt;main.o : main.c binky.h akbar.h defs.h&lt;br /&gt;binky.o : binky.c binky.h&lt;br /&gt;akbar.o : akbar.c akbar.h defs.h&lt;br /&gt;## Remove all the compilation and debugging files&lt;br /&gt;clean :&lt;br /&gt;tabrm -f core $(PROG) $(OBJS)&lt;br /&gt;## Build tags for these sources&lt;br /&gt;TAGS : $(SRCS) $(HDRS)&lt;br /&gt;tabetags -t $(SRCS) $(HDRS)&lt;br /&gt;The first (default) target builds the program from the three .o's. The next three targets&lt;br /&gt;such as "main.o : main.c binky.h akbar.h defs.h" identify the .o's that&lt;br /&gt;need to be built and which source files they depend on. These rules identify what needs to&lt;br /&gt;be built, but they omit the command line. Therefore they will use the default rule which&lt;br /&gt;knows how to build one .o from one .c with the same name. Finally, make&lt;br /&gt;automatically knows that a X.o always depends on its source X.c, so X.c can be&lt;br /&gt;omitted from the rule. So the first rule could b ewritten without main.c --&lt;br /&gt;"main.o : binky.h akbar.h defs.h".&lt;br /&gt;The later targets, clean and TAGS, perform other convenient operations. The clean&lt;br /&gt;target is used to remove all of the object files, the executable, and a core file if you've&lt;br /&gt;been debugging, so that you can perform the build process from scratch . You can make&lt;br /&gt;clean if you want to recover space by removing all the compilation and debugging&lt;br /&gt;output files. You also may need to make clean if you move to a system with a&lt;br /&gt;different architecture from where your object libraries were originally compiled, and so&lt;br /&gt;8&lt;br /&gt;you need to recompile from scratch. The TAGS rule creates a tag file that most Unix&lt;br /&gt;editors can use to search for symbol definitions.&lt;br /&gt;Compiling in Emacs&lt;br /&gt;Emacs has built-in support for the compile process. To compile your code from emacs,&lt;br /&gt;type M-x compile. You will be prompted for a compile command. If you have a&lt;br /&gt;makefile, just type make and hit return. The makefile will be read and the appropriate&lt;br /&gt;commands executed. The emacs buffer will split at this point, and compile errors will be&lt;br /&gt;brought up in the newly created buffer. In order to go to the line where a compile error&lt;br /&gt;occurred, place the cursor on the line which contains the error message and hit ^c-^c.&lt;br /&gt;This will jump the cursor to the line in your code where the error occurred (“cc” is the&lt;br /&gt;historical name for the C compiler).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-2834609209488510770?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/2834609209488510770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=2834609209488510770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/2834609209488510770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/2834609209488510770'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/information-about-make-file-typing-out.html' title=''/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-7577935890958453471</id><published>2008-05-07T05:55:00.000-07:00</published><updated>2008-05-07T05:59:03.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdb debugger'/><title type='text'>Information about gdb Debugger</title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;gdb Debugger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;You may run into a bug or two in your programs. There are many techniques for finding&lt;br /&gt;bugs, but a good debugger can make the job a lot easier. In most programs of any&lt;br /&gt;significant size, it is not possible to track down all of the bugs in a program just by staring&lt;br /&gt;at the source — you need to see clues in the runtime behavior of the program to find the&lt;br /&gt;bug. It's worth investing time to learn to use debuggers well.&lt;br /&gt;GDB&lt;br /&gt;We recommend the GNU debugger gdb, since it basically stomps on dbx in every&lt;br /&gt;possible area and works nicely with the gcc compiler. Other nice debugging&lt;br /&gt;environments include ups and CodeCenter, but these are not as universally available as&lt;br /&gt;gdb, and in the case of CodeCenter not as cheaply. While gdb does not have a flashy&lt;br /&gt;graphical interface as do the others, it is a powerful tool that provides the knowledgeable&lt;br /&gt;programmer with all of the information they could possibly want and then some.&lt;br /&gt;This section does not come anywhere close to describing all of the features of gdb, but&lt;br /&gt;will hit on the high points. There is on-line help for gdb which can be seen by using the&lt;br /&gt;help command from within gdb. If you want more information try xinfo if you are&lt;br /&gt;logged onto the console of a machine with an X display or use the info-browser mode&lt;br /&gt;from within emacs.&lt;br /&gt;Starting the debugger&lt;br /&gt;As with make there are two different ways of invoking gdb. To start the debugger from&lt;br /&gt;the shell just type...&lt;br /&gt;gdb program&lt;br /&gt;where program is the name of the target executable that you want to debug. If you do&lt;br /&gt;not specify a target then gdb will start without a target and you will need to specify one&lt;br /&gt;later before you can do anything useful.&lt;br /&gt;As an alternative, from within emacs you can use the command [Esc]-x gdb which&lt;br /&gt;will then prompt you for the name of the executable file. You cannot start an inferior gdb&lt;br /&gt;session from within emacs without specifying a target. The emacs window will then split&lt;br /&gt;between the gdb buffer and a separate buffer showing the current source line.&lt;br /&gt;Running the debugger&lt;br /&gt;Once started, the debugger will load your application and its symbol table (which&lt;br /&gt;contains useful information about variable names, source code files, etc.). This symbol&lt;br /&gt;9&lt;br /&gt;table is the map produced by the -g compiler option that the debugger reads as it is&lt;br /&gt;running your program.&lt;br /&gt;The debugger is an interactive program. Once started, it will prompt you for commands.&lt;br /&gt;The most common commands in the debugger are: setting breakpoints, single stepping,&lt;br /&gt;continuing after a breakpoint, and examining the values of variables.&lt;br /&gt;Running the Program&lt;br /&gt;run Reset the program, run (or rerun) from the&lt;br /&gt;beginning. You can supply command-line&lt;br /&gt;arguments the same way you can supply commandline&lt;br /&gt;arguments to your executable from the shell.&lt;br /&gt;step Run next line of source and return to debugger. If a&lt;br /&gt;subroutine call is encountered, follow into that&lt;br /&gt;subroutine.&lt;br /&gt;step count Run count lines of source.&lt;br /&gt;next Similar to step, but doesn't step into subroutines.&lt;br /&gt;finish Run until the current function/method returns.&lt;br /&gt;return Make selected stack frame return to its caller.&lt;br /&gt;jump address Continue program at specified line or address.&lt;br /&gt;When a target executable is first selected (usually on startup) the current source file is set&lt;br /&gt;to the file with the main function in it, and the current source line is the first executable&lt;br /&gt;line of the this function.&lt;br /&gt;As you run your program, it will always be executing some line of code in some source&lt;br /&gt;file. When you pause the program (when the flow of control hits a “breakpoint” of by&lt;br /&gt;typing Control-C to interrupt), the “current target file” is the source code file in which the&lt;br /&gt;program was executing when you paused it. Likewise, the “current source line” is the line&lt;br /&gt;of code in which the program was executing when you paused it.&lt;br /&gt;Breakpoints&lt;br /&gt;You can use breakpoints to pause your program at a certain point. Each breakpoint is&lt;br /&gt;assigned an identifying number when you create it, and so that you can later refer to that&lt;br /&gt;breakpoint should you need to manipulate it.&lt;br /&gt;A breakpoint is set by using the command break specifying the location of the code&lt;br /&gt;where you want the program to be stopped. This location can be specified in several&lt;br /&gt;ways, such as with the file name and either a line number or a function name within that&lt;br /&gt;file (a line needs to be a line of actual source code — comments and whitespace don't&lt;br /&gt;count). If the file name is not specified the file is assumed to be the current target file, and&lt;br /&gt;if no arguments are passed to break then the current source line will be the breakpoint.&lt;br /&gt;gdb provides the following commands to manipulate breakpoints:&lt;br /&gt;info break Prints a list of all breakpoints with numbers and&lt;br /&gt;status.&lt;br /&gt;10&lt;br /&gt;break function Place a breakpoint at start of the specified function&lt;br /&gt;break linenumber Prints a breakpoint at line, relative to current source&lt;br /&gt;file.&lt;br /&gt;break filename:linenumber Place a breakpoint at the specified line within the&lt;br /&gt;specified source file.&lt;br /&gt;You can also specify an if clause to create a conditional breakpoint:&lt;br /&gt;break fn if expression Stop at the breakpoint, only if expression evaluates&lt;br /&gt;to true. Expression is any valid C expression,&lt;br /&gt;evaluated within current stack frame when hitting&lt;br /&gt;the breakpoint.&lt;br /&gt;disable breaknum&lt;br /&gt;enable breaknum Disable/enable breakpoint identified by breaknum&lt;br /&gt;delete breaknum Delete the breakpoint identified by breaknum&lt;br /&gt;commands breaknum Specify commands to be executed when breaknum&lt;br /&gt;is reached. The commands can be any list of C&lt;br /&gt;statements or gdb commands. This can be useful to&lt;br /&gt;fix code on-the-fly in the debugger without recompiling&lt;br /&gt;(Woo Hoo!).&lt;br /&gt;cont Continue a program that has been stopped.&lt;br /&gt;For example, the commands...&lt;br /&gt;break binky.c:120&lt;br /&gt;break DoGoofyStuff&lt;br /&gt;set a breakpoint on line 120 of the file binky.c and another on the first line of the function&lt;br /&gt;DoGoofyStuff. When control reaches these locations, the program will stop and give&lt;br /&gt;you a chance to look around in the debugger.&lt;br /&gt;Gdb (and most other debuggers) provides mechanisms to determine the current state of&lt;br /&gt;the program and how it got there. The things that we are usually interested in are (a)&lt;br /&gt;where are we in the program? and (b) what are the values of the variables around us?&lt;br /&gt;Examining the stack&lt;br /&gt;To answer question (a) use the backtrace command to examine the run-time stack.&lt;br /&gt;The run-time stack is like a trail of breadcrumbs in a program; each time a function call is&lt;br /&gt;made, a crumb is dropped (an run-time stack frame is pushed). When a return from a&lt;br /&gt;function occurs, the corresponding stack frame is popped and discarded. These stack&lt;br /&gt;frames contain valuable information about the sequence of callers which brought us to the&lt;br /&gt;current line, and what the parameters were for each call.&lt;br /&gt;Gdb assigns numbers to stack frames counting from zero for the innermost (currently&lt;br /&gt;executing) frame. At any time gdb identifies one frame as the “selected” frame. Variable&lt;br /&gt;lookups are done with respect to the selected frame. When the program being debugged&lt;br /&gt;stops (at a breakpoint), gdb selects the innermost frame. The commands below can be&lt;br /&gt;used to select other frames by number or address.&lt;br /&gt;11&lt;br /&gt;backtrace Show stack frames, useful to find the calling&lt;br /&gt;sequence that produced a crash.&lt;br /&gt;frame framenumber Start examining the frame with framenumber. This&lt;br /&gt;does not change the execution context, but allows&lt;br /&gt;to examine variables for a different frame.&lt;br /&gt;down Select and print stack frame called by this one. (The&lt;br /&gt;metaphor here is that the stack grows down with&lt;br /&gt;each function call.)&lt;br /&gt;up Select and print stack frame that called this one.&lt;br /&gt;info args Show the argument variables of current stack&lt;br /&gt;frame.&lt;br /&gt;info locals Show the local variables of current stack frame.&lt;br /&gt;Examining source files&lt;br /&gt;Another way to find our current location in the program and other useful information is to&lt;br /&gt;examine the relevant source files. gdb provides the following commands:&lt;br /&gt;list linenum Print ten lines centered around linenum in current&lt;br /&gt;source file.&lt;br /&gt;list function Print ten lines centered around beginning of&lt;br /&gt;function (or method).&lt;br /&gt;list Print ten more lines.&lt;br /&gt;The list command will show the source lines with the current source line centered in&lt;br /&gt;the range. (Using gdb from within emacs makes these command obsolete since it does&lt;br /&gt;all of the current source stuff for you.)&lt;br /&gt;Examining data&lt;br /&gt;To answeer the question (b) “what are the values of the variables around us?” use the&lt;br /&gt;following commands...&lt;br /&gt;print expression Print value of expression. Expression is any valid C&lt;br /&gt;expression, can include function calls and&lt;br /&gt;arithmetic expressions, all evaluated within current&lt;br /&gt;stack frame.&lt;br /&gt;set variable = expression Assign value of variable to expression. You can&lt;br /&gt;set any variable in the current scope. Variables&lt;br /&gt;which begin with $ can be used as temporary&lt;br /&gt;variables local to gdb.&lt;br /&gt;display expression Print value of expression each time the program&lt;br /&gt;stops. This can be useful to watch the change in a&lt;br /&gt;variable as you step through code.&lt;br /&gt;undisplay Cancels previous display requests.&lt;br /&gt;12&lt;br /&gt;In gdb, there are two different ways of displaying the value of a variable: a snapshot of&lt;br /&gt;the variable’s current value and a persistent display for the entire life of the variable. The&lt;br /&gt;print command will print the current value of a variable, and the display command&lt;br /&gt;will make the debugger print the variable's value on every step for as long as the variable&lt;br /&gt;exists. The desired variable is specified by using C syntax. For example...&lt;br /&gt;print x.y[3]&lt;br /&gt;will print the value of the fourth element of the array field named y of a structure variable&lt;br /&gt;named x. The variables that are accessible are those of the currently selected function's&lt;br /&gt;activation frame, plus all those whose scope is global or static to the current target file.&lt;br /&gt;Both the print and display functions can be used to evaluate arbitrarily complicated&lt;br /&gt;expressions, even those containing, function calls, but be warned that if a function has&lt;br /&gt;side-effects a variety of unpleasant and unexpected situations can arise.&lt;br /&gt;Shortcuts&lt;br /&gt;Finally, there are some things that make using gdb a bit simpler. All of the commands&lt;br /&gt;have short-cuts so that you don’t have to type the whole command name every time you&lt;br /&gt;want to do something simple. A command short-cut is specified by typing just enough of&lt;br /&gt;the command name so that it unambiguously refers to a command, or for the special&lt;br /&gt;commands break, delete, run, continue, step, next and print you need only&lt;br /&gt;use the first letter. Additionally, the last command you entered can be repeated by just&lt;br /&gt;hitting the return key again. This is really useful for single stepping for a range while&lt;br /&gt;watching variables change.&lt;br /&gt;Miscellaneous&lt;br /&gt;editmode mode Set editmode for gdb command line. Supported&lt;br /&gt;values for mode are emacs, vi, dumb.&lt;br /&gt;shell command Execute the rest of the line as a shell command.&lt;br /&gt;history Print command history.&lt;br /&gt;Debugging Strategies&lt;br /&gt;Some people avoid using debuggers because they don't want to learn another tool. This is&lt;br /&gt;a mistake. Invest the time to learn to use a debugger and all its features — it will make&lt;br /&gt;you much more productive in tracking down problems.&lt;br /&gt;Sometimes bugs result in program crashes (a.k.a. “core dumps”, “register dumps”, etc.)&lt;br /&gt;that bring your program to a halt with a message like “Segmentation Violation” or the&lt;br /&gt;like. If your program has such a crash, the debugger will intercept the signal sent by the&lt;br /&gt;processor that indicates the error it found, and allow you to examine the state program.&lt;br /&gt;Thus with almost no extra effort, the debugger can show you the state of the program at&lt;br /&gt;the moment of the crash.&lt;br /&gt;Often, a bug does not crash explicitly, but instead produces symptoms of internal&lt;br /&gt;problems. In such a case, one technique is to put a breakpoint where the program is&lt;br /&gt;misbehaving, and then look up the call stack to get some insight about the data and&lt;br /&gt;control flow path that led to the bad state. Another technique is to set a breakpoint at&lt;br /&gt;some point before the problems start and step forward towards the problems, examining&lt;br /&gt;the state of the program along the way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-7577935890958453471?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/7577935890958453471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=7577935890958453471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7577935890958453471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7577935890958453471'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/gdb-debugger.html' title='Information about gdb Debugger'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-7435083753092636538</id><published>2008-05-07T05:50:00.000-07:00</published><updated>2008-05-07T05:53:22.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix programming tools'/><title type='text'>UNIX TOOLS</title><content type='html'>&lt;span style="color: rgb(255, 102, 0);font-size:130%;" &gt;Unix Programming Tools&lt;/span&gt;&lt;br /&gt;By Parlante, Zelenski, and many others Copyright ©1998-2001, Stanford University&lt;br /&gt;Introduction&lt;br /&gt;This article explains the overall edit-compile-link-debug programming cycle and&lt;br /&gt;introduces several common Unix programming tools -- gcc, make, gdb, emacs, and the&lt;br /&gt;Unix shell. The goal is to describe the major features and typcial uses of the tools and&lt;br /&gt;show how they fit together with enough detail for simple projects. We've used a version&lt;br /&gt;of this article at Stanford to help students get started with Unix.&lt;br /&gt;Contents&lt;br /&gt;Introduction — the compile-link process 1&lt;br /&gt;The gcc compiler/linker 2&lt;br /&gt;The make project utility 5&lt;br /&gt;The gdb debugger 8&lt;br /&gt;The emacs editor 13&lt;br /&gt;Summary of Unix shell commands 15&lt;br /&gt;This is document #107, Unix Programming Tools, in the Stanford CS Education Library.&lt;br /&gt;This and other free educational materials are available at http://cslibrary.stanford.edu/.&lt;br /&gt;This document is free to be used, reproduced, or sold so long as it is intact and&lt;br /&gt;unchanged.&lt;br /&gt;Other Resources&lt;br /&gt;This article is an introduction — for more detailed information about a particular tool, see&lt;br /&gt;the tool's man pages and xinfo entries. Also, O'Reilly &amp;amp; Associates publishes a pretty&lt;br /&gt;good set of references for many Unix related tools (the books with animal pictures on the&lt;br /&gt;cover). For basic coverage of the C programming language, see CS Education Library&lt;br /&gt;#101, (http://cslibrary.stanford.edu/101/).&lt;br /&gt;The Compile Process&lt;br /&gt;Before going into detail about the individual tools themselves, it is useful to review the&lt;br /&gt;overall process that goes into building an executable program. After the source text files&lt;br /&gt;have been edited, there are two steps in the build process: compiling and linking. Each&lt;br /&gt;source file (foo.c) is compiled into an object file (foo.o). Each object file contain a system&lt;br /&gt;dependent, compiled representation of the program as described in its source file.&lt;br /&gt;Typically the file name of an object module is the same as the source file that produced it,&lt;br /&gt;but with a ".o" file extension — "main.c" is compiled to produce "main.o". The .o file&lt;br /&gt;will include references, known as symbols, to functions, variables, etc. that the code&lt;br /&gt;needs. The individual object files are then linked together to produce a single executable&lt;br /&gt;file which the system loader can use when the program is actually run. The link step will&lt;br /&gt;2&lt;br /&gt;also bring in library object files that contain the definitions of library functions like&lt;br /&gt;printf() and malloc(). The overall process looks like this...&lt;br /&gt;main.c module1.c module2.c&lt;br /&gt;main.o module1.o module2.o&lt;br /&gt;program&lt;br /&gt;library&lt;br /&gt;functions&lt;br /&gt;C compiler&lt;br /&gt;Linker&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-7435083753092636538?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/7435083753092636538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=7435083753092636538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7435083753092636538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7435083753092636538'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/05/unix-tools.html' title='UNIX TOOLS'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-8928462212433194922</id><published>2008-04-28T01:58:00.000-07:00</published><updated>2008-04-28T01:59:17.124-07:00</updated><title type='text'>Books On Unix</title><content type='html'>Books on Using UnixThese can help you get started with interactive use of the shell and tools like grep and vi.&lt;br /&gt;"Teach Yourself Unix in 24 Hours", 3rd edition, by Dave Taylor. Good for folks who want a structured approach. Links: &lt;a href="http://www.intuitive.com/tyu24/"&gt;author's page&lt;/a&gt;, &lt;a href="http://www.intuitive.com/tyu24/chap19.shtml"&gt;example chapter&lt;/a&gt;, &lt;a href="http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0672321270"&gt;fatbrain.com&lt;/a&gt;, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0672321270/"&gt;Amazon&lt;/a&gt;.&lt;br /&gt;"Think UNIX", by Jon Lasser. A slightly more advanced introduction to Unix anno 2000. Links: &lt;a href="http://www.tux.org/~lasser/think-unix/"&gt;author's page&lt;/a&gt;.&lt;br /&gt;"The Unix Programming Environment", by Kernighan and Pike. A good introduction to Unix anno 1984. It's a bit like reading Middle English. Don't buy it new -- but if you find a copy cheap, read it to see what Unix looked like before graphics and the Internet, and what C programming looked like before ANSI C. Links: &lt;a href="http://cm.bell-labs.com/cm/cs/upe/"&gt;author's page&lt;/a&gt;, &lt;a href="http://half.ebay.com/cat/buy/prod.cgi?cpid=61960&amp;amp;domain_id=1856&amp;amp;meta_id=1"&gt;half.com&lt;/a&gt;, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/013937681X"&gt;Amazon&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-8928462212433194922?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/8928462212433194922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=8928462212433194922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/8928462212433194922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/8928462212433194922'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/books-on-unix.html' title='Books On Unix'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-6995587320284576676</id><published>2008-04-27T19:44:00.000-07:00</published><updated>2008-04-27T19:49:00.176-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processes'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><category scheme='http://www.blogger.com/atom/ns#' term='shared memory'/><category scheme='http://www.blogger.com/atom/ns#' term='message passing'/><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="color:#cc33cc;"&gt;Inter-process communication&lt;/span&gt;&lt;/span&gt; :&lt;br /&gt;&lt;br /&gt;Inter-Process Communication (IPC) is a set of techniques for the exchange of data among two or more &lt;a title="Thread (computer science)" href="http://en.wikipedia.org/wiki/Thread_(computer_science)"&gt;threads&lt;/a&gt; in one or more &lt;a title="Process (computing)" href="http://en.wikipedia.org/wiki/Process_(computing)"&gt;processes&lt;/a&gt;. Processes may be running on one or more computers connected by a &lt;a title="Computer network" href="http://en.wikipedia.org/wiki/Computer_network"&gt;network&lt;/a&gt;. IPC techniques are divided into methods for &lt;a title="Message passing" href="http://en.wikipedia.org/wiki/Message_passing"&gt;message passing&lt;/a&gt;, &lt;a title="Synchronization (computer science)" href="http://en.wikipedia.org/wiki/Synchronization_(computer_science)"&gt;synchronization&lt;/a&gt;, &lt;a title="Shared memory" href="http://en.wikipedia.org/wiki/Shared_memory"&gt;shared memory&lt;/a&gt;, and &lt;a title="Remote procedure call" href="http://en.wikipedia.org/wiki/Remote_procedure_call"&gt;remote procedure calls&lt;/a&gt; (RPC). The method of IPC used may vary based on the bandwidth and latency of communication between the threads, and the type of data being communicated.&lt;br /&gt;IPC may also be referred to as inter-thread communication and inter-application communication.&lt;br /&gt;IPC, on pair with the &lt;a title="Address space" href="http://en.wikipedia.org/wiki/Address_space"&gt;address space&lt;/a&gt; concept, is the foundation for address space independence/isolation.&lt;a title="" href="http://en.wikipedia.org/wiki/Inter-process_communication#cite_note-0"&gt;[1]&lt;/a&gt;&lt;br /&gt;Contents[&lt;a class="internal" id="togglelink" href="javascript:toggleToc()"&gt;hide&lt;/a&gt;]&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication#Implementations"&gt;1 Implementations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication#See_also"&gt;2 See also&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication#References"&gt;3 References&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication#External_links"&gt;4 External links&lt;/a&gt;&lt;br /&gt;//&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-6995587320284576676?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/6995587320284576676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=6995587320284576676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/6995587320284576676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/6995587320284576676'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/inter-process-communication.html' title=''/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-3199073338825754079</id><published>2008-04-27T19:31:00.000-07:00</published><updated>2008-04-27T19:34:13.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='basic syntax'/><category scheme='http://www.blogger.com/atom/ns#' term='pipes'/><title type='text'>INTRODUCTION UNIX PPTS CLICK BELOW</title><content type='html'>&lt;a class="l" onmousedown="return clk(this.href,'','','res','1','')" href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/"&gt;An Introduction to the Unix Command Line&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld002.htm"&gt;What is Unix?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld003.htm"&gt;Unix is Made Up of&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld004.htm"&gt;Our View of the World as Users&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld005.htm"&gt;Use the command line&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld006.htm"&gt;Simple Unix Directory Structure&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld007.htm"&gt;Your First Command&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld008.htm"&gt;Special Directories&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld009.htm"&gt;Changing Directories&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld010.htm"&gt;Your Prompt Helps you Navigate&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld011.htm"&gt;Other File System Utilities &lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld012.htm"&gt;Basic Syntax&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld013.htm"&gt;Other Simple Commands&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld014.htm"&gt;Other Comands&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld015.htm"&gt;Using Other Commands Syntax: command file&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld016.htm"&gt;Pipes and Redirection&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld017.htm"&gt;Pipes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld018.htm"&gt;I/O Redirection&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld019.htm"&gt;Standard File Handles&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld020.htm"&gt;Three Default Open Files&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld021.htm"&gt;Standard File Handles&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld022.htm"&gt;Pipes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/sld023.htm"&gt;Shell/Environment Variables&lt;/a&gt;&lt;br /&gt;Author: Instructional Software&lt;br /&gt;&lt;a href="http://yakko.cs.wmich.edu/presentations/20030123-unix/unix_slides/unixFIN.ppt"&gt;Download presentation source &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-3199073338825754079?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/3199073338825754079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=3199073338825754079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/3199073338825754079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/3199073338825754079'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/introduction-unix-ppts-click-below.html' title='INTRODUCTION UNIX PPTS CLICK BELOW'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-5940320761183308995</id><published>2008-04-27T19:20:00.000-07:00</published><updated>2008-04-27T19:28:03.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix faqs'/><title type='text'>UNIX FAQ Below</title><content type='html'>&lt;a class="l" onmousedown="return clk(this.href,'','','res','3','')" href="http://tonic.physics.sunysb.edu/docs/unixfaq.html"&gt;UNIX FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.1"&gt;2.1) How do I remove a file whose name begins with a "-" ?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.2"&gt;2.2) How do I remove a file with funny characters in the filename ?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.3"&gt;2.3) How do I get a recursive directory listing?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.4"&gt;2.4) How do I get the current directory into my prompt?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.5"&gt;2.5) How do I read characters from the terminal in a shell script?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.6"&gt;2.6) How do I rename "*.foo" to "*.bar", or change file names to lowercase?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.7"&gt;2.7) Why do I get [some strange error message] when I "rsh host command" ?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.8"&gt;2.8) How do I {set an environment variable, change directory} inside a program or shell script and have that change affect my current shell?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.9"&gt;2.9) How do I redirect stdout and stderr separately in csh?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.10"&gt;2.10) How do I tell inside .cshrc if I'm a login shell?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.11"&gt;2.11) How do I construct a shell glob-pattern that matches all files except "." and ".." ?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.12"&gt;2.12) How do I find the last argument in a Bourne shell script?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.13"&gt;2.13) What's wrong with having '.' in your $PATH ?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.14"&gt;2.14) How do I ring the terminal bell during a shell script?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tonic.physics.sunysb.edu/docs/unixfaq.html#2.15"&gt;2.15) Why can't I use "talk" to talk with my friend on machine X?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-5940320761183308995?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/5940320761183308995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=5940320761183308995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5940320761183308995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5940320761183308995'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/unix-faq.html' title='UNIX FAQ Below'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-4473824217753257506</id><published>2008-04-26T04:02:00.000-07:00</published><updated>2008-04-26T04:05:44.215-07:00</updated><title type='text'>some unix &amp;  linuxbooks</title><content type='html'>&lt;p&gt;&lt;span style=";font-family:Arial;font-size:130%;"  &gt;&lt;strong&gt;Multi-platform&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0131115510/aurorasoftwarein"&gt;Optimizing  Unix for Performance&lt;/a&gt;, Amir H. Majidimehr  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0138491674/aurorasoftwarein"&gt;Oracle  and Unix Performance Tuning&lt;/a&gt;, Ahmed Alomari  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/059600284X/aurorasoftwarein"&gt;System  Performance Tuning, 2nd edition&lt;/a&gt;, Gian-Paolo D. Musumeci &amp;amp; Mike Loukides  (covers Solaris and Linux)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0789716321/aurorasoftwarein"&gt;Using  Unix&lt;/a&gt;, by Steve Moritsugu  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0782114997/aurorasoftwarein"&gt;Understanding  UNIX&lt;/a&gt;, by Stan Kelly-Bootle  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0262611120/aurorasoftwarein"&gt;The  Computer Contradictionary&lt;/a&gt;, by Stan Kelly-Bootle  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/078212528X/aurorasoftwarein"&gt;UNIX  Complete&lt;/a&gt;, by Stan&lt;/li&gt;&lt;/ul&gt;     &lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:130%;"&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0672320819/aurorasoftwarein"&gt;Linux  Performance Tuning and Capacity Planning&lt;/a&gt;, Jason R. Fink &amp;amp; Matthew D.  Sherer  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/059600284X/aurorasoftwarein"&gt;System  Performance Tuning, 2nd edition&lt;/a&gt;, Gian-Paolo D. Musumeci &amp;amp; Mike Loukides  (covers Solaris and Linux)  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/013144753X/aurorasoftwarein"&gt;Performance  Tuning for Linux Servers&lt;/a&gt;, Sandra K. Johnson, Gerrit Huizenga, Badari  Pulavarty  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0131486829/aurorasoftwarein"&gt;Optimizing  Linux Performance&lt;/a&gt;, Phillip G. Ezolt  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0131492470/aurorasoftwarein"&gt;Linux  Debugging and Performance Tuning&lt;/a&gt;, Steve Best &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-4473824217753257506?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/4473824217753257506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=4473824217753257506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/4473824217753257506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/4473824217753257506'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/some-unix-books.html' title='some unix &amp;  linuxbooks'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-6503206080916653265</id><published>2008-04-26T03:19:00.000-07:00</published><updated>2008-04-26T03:21:31.124-07:00</updated><title type='text'>creation of unix</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_I6Tt06ISiqo/SBMCIKv4nSI/AAAAAAAAACA/mK2oOH9er4k/s1600-h/86-300838-EM.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193497134635719970" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_I6Tt06ISiqo/SBMCIKv4nSI/AAAAAAAAACA/mK2oOH9er4k/s320/86-300838-EM.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The Creation of the UNIX* Operating System&lt;br /&gt;After three decades of use, the &lt;a title="UNIX is a&amp;#10;registered trademark of The Open Group" onclick="MM_openBrWindow('trademark.html','trademark','scrollbars=yes,resizable=yes,width=200,height=200')" href="http://www.bell-labs.com/history/unix/#"&gt;UNIX*&lt;/a&gt; computer operating system from Bell Labs is still regarded as one of the most powerful, versatile, and flexible operating systems (OS) in the computer world. Its popularity is due to many factors, including its ability to run a wide variety of machines, from micros to supercomputers, and its portability -- all of which led to its adoption by many manufacturers.&lt;br /&gt;Like another legendary creature whose name also ends in 'x,' UNIX rose from the ashes of a multi-organizational effort in the early 1960s to develop a dependable timesharing operating system.&lt;br /&gt;The joint effort was not successful, but a few survivors from Bell Labs tried again, and what followed was a system that offers its users a work environment that has been described as "of unusual simplicity, power, and elegance...."&lt;br /&gt;The system also fostered a distinctive approach to software design -- solving a problem by interconnecting simpler tools, rather than creating large monolithic application programs.&lt;br /&gt;Its development and evolution led to a new philosophy of computing, and it has been a never-ending source of both challenges and joy to programmers around the world.&lt;br /&gt;Next: &lt;a href="http://www.bell-labs.com/history/unix/chaos.html"&gt;Before Multics there was chaos, and afterwards, too&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="First page" href="http://www.bell-labs.com/history/unix/"&gt;The Creation of the UNIX* Operating System&lt;/a&gt;&lt;br /&gt;&lt;a title="Explanation of the basics of UNIX" href="http://www.bell-labs.com/history/unix/tutorial.html"&gt;An Overview of the UNIX* Operating System&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bell-labs.com/history/unix/ritchiebio.html"&gt;Dennis Ritchie -- Biography&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bell-labs.com/history/unix/thompsonbio.html"&gt;Ken Thompson -- Biography&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bell-labs.com/history/unix/blcontributions.html"&gt;Bell Labs' Early Contributions to Computer Science&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bell-labs.com/history/unix/ltcontributions.html"&gt;Lucent's Contributions to Computer Science, Software and Data Transmission&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bell-labs.com/history/unix/moreinfo.html"&gt;For more information&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-6503206080916653265?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/6503206080916653265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=6503206080916653265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/6503206080916653265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/6503206080916653265'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/cretion-of-unix.html' title='creation of unix'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I6Tt06ISiqo/SBMCIKv4nSI/AAAAAAAAACA/mK2oOH9er4k/s72-c/86-300838-EM.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-7836808309710923190</id><published>2008-04-26T03:04:00.001-07:00</published><updated>2008-04-26T03:18:26.221-07:00</updated><title type='text'>some useful unix links</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_I6Tt06ISiqo/SBMA-av4nRI/AAAAAAAAAB4/cBjIZkhzS9c/s1600-h/port_ritchie.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193495867620367634" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_I6Tt06ISiqo/SBMA-av4nRI/AAAAAAAAAB4/cBjIZkhzS9c/s320/port_ritchie.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.bell-labs.com/history/unix/"&gt;The Creation of the UNIX Operating System&lt;/a&gt; from Lucent.&lt;br /&gt;&lt;a href="http://www.princeton.edu/~mike/expotape.htm"&gt;The Unix Oral History Project&lt;/a&gt; from Bell Laboratories.&lt;br /&gt;&lt;a href="http://www.princeton.edu/~mike/unixhistory"&gt;An Oral History of Unix&lt;/a&gt; from Princeton.&lt;br /&gt;&lt;a href="http://www.unix-systems.org/what_is_unix/history_timeline.html"&gt;UNIX Past&lt;/a&gt; from The Open Group.&lt;br /&gt;&lt;a href="http://minnie.tuhs.org/TUHS/"&gt;The Unix Heritage Society&lt;/a&gt; by Warren Toomey.&lt;br /&gt;&lt;a href="http://www.freebsd.org/releases/index.html"&gt;FreeBSD Release Information&lt;/a&gt; from FreeBSD.&lt;br /&gt;&lt;a href="http://www.de.freebsd.org/de/ftp/unix-stammbaum"&gt;BSD History Chart&lt;/a&gt; from FreeBSD.&lt;br /&gt;&lt;a href="http://www.netbsd.org/Releases/formal.html"&gt;Formal NetBSD Releases&lt;/a&gt; from NetBSD.&lt;br /&gt;&lt;a href="http://www-1.ibm.com/servers/aix/os/aixs2s.pdf"&gt;AIX History from Release to Release&lt;/a&gt; from IBM.&lt;br /&gt;&lt;a href="http://www.applelust.com/alust/terminal/archives/terminal041202.shtml"&gt;Darwin/Mac OS X: The Fifth BSD&lt;/a&gt; from Applelust.&lt;br /&gt;&lt;a href="http://www.sun.com/aboutsun/coinfo/history.html"&gt;Sun History&lt;/a&gt; from SUN.&lt;br /&gt;&lt;a href="http://unixed.com/Resources/history_of_solaris.pdf"&gt;The History of Solaris&lt;/a&gt; (PDF) from &lt;a href="http://unixed.com/"&gt;UnixEd&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.sun.com/software/cover/2001-1106/"&gt;The Story Behind the Solaris Operating Environment&lt;/a&gt; from SUN.&lt;br /&gt;&lt;a href="http://www.hp.com/softwarereleases/releases-media2/history/slide2.html"&gt;HP-UX History&lt;/a&gt; from HP.&lt;br /&gt;&lt;a href="http://www.multicians.org/unix.html"&gt;Unix and Multics&lt;/a&gt; by Tom Van Vleck.&lt;br /&gt;&lt;a href="http://virtual.park.uga.edu/hc/unixhistory.html"&gt;Unix Start&lt;/a&gt; from the University of Georgia.&lt;br /&gt;&lt;a href="http://www.kernel.org/"&gt;Linux Kernel Archives&lt;/a&gt; and &lt;a href="http://www.linuxhq.com/"&gt;Linux HeadQuarters&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.oreilly.com/catalog/opensources/book/kirkmck.html"&gt;20 Years of Berkeley Unix&lt;/a&gt; by Marshall Kirk McKusick.&lt;br /&gt;&lt;a href="http://www.osdata.com/"&gt;Operating System Technical Comparison&lt;/a&gt; from Milo.&lt;br /&gt;&lt;a href="http://www.islandnet.com/~kpolsson/comphist/"&gt;Chronology of Events in the History of Microcomputers&lt;/a&gt; by Ken Polsson.&lt;br /&gt;&lt;a href="http://www.tribug.org/famtree.html"&gt;The BSD Family Tree&lt;/a&gt; from TriBUG.&lt;br /&gt;&lt;a href="http://www.grokline.net/"&gt;Grokline's UNIX Ownership History Project&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.zwahlendesign.ch/en/12unix_history.html"&gt;ZwahlenDesign Unix History&lt;/a&gt; by Christian Zwahlen.&lt;br /&gt;&lt;a href="http://www.tliquest.net/ryan/sgi/irix_versions.html"&gt;IRIX Versions and History&lt;/a&gt; by Ryan Thoryk.&lt;br /&gt;&lt;a href="http://linuxhelp.blogspot.com/2006/04/mind-map-of-linux-distributions.html"&gt;Mind Map of Linux distributions &lt;/a&gt;by Ravi Kumar.&lt;br /&gt;&lt;a href="http://futurist.se/gldt/"&gt;GNU/Linux distro timeline&lt;/a&gt; by Andreas Lundqvist.&lt;br /&gt;&lt;a href="http://lug.oregonstate.edu/projects/kernelmap/map.php"&gt;Linux Kernel 2.6.8.1 map&lt;/a&gt; by OSU.&lt;br /&gt;&lt;a href="http://www.kde-files.org/content/show.php?content=46315"&gt;Yet Another Linux Distro Timeline&lt;/a&gt; by greengrass44.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=VaZOvE1VjbI"&gt;Short UNIX History&lt;/a&gt; video from YouTube&lt;br /&gt;&lt;a href="http://www.opensolaris.org/os/community/on/flag-days/all/"&gt;OpenSolaris builds&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-7836808309710923190?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/7836808309710923190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=7836808309710923190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7836808309710923190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/7836808309710923190'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/some-useful-unix-links.html' title='some useful unix links'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_I6Tt06ISiqo/SBMA-av4nRI/AAAAAAAAAB4/cBjIZkhzS9c/s72-c/port_ritchie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-5932924833730445701</id><published>2008-04-25T08:16:00.000-07:00</published><updated>2008-04-25T08:17:41.414-07:00</updated><title type='text'>MontaVista Linux Professional Edition 3.1 Preview Kit</title><content type='html'>&lt;p&gt;We no longer support the preview kit for MontaVista Linux Professional  Edition 3.1.&lt;/p&gt; &lt;p&gt;The current version of MontaVista Pro is 5.0, and you can preview it without  installing software by using MontaVista TestDrive.&lt;/p&gt; &lt;p&gt;MontaVista TestDrive enables you to evaluate your applications on MontaVista  development tools and OS with your choice of processor architecture.&lt;/p&gt; &lt;p&gt;Please &lt;a href="http://www.mvista.com/embedded-linux-evaluation/index.php"&gt;click here to find out  about MontaVista TestDrive previews&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If you want to learn more about the latest version of MontaVista Linux  Professional Edition, &lt;a href="http://www.mvista.com/product_detail_pro.php"&gt;start with this  page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Thank you.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-5932924833730445701?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/5932924833730445701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=5932924833730445701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5932924833730445701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5932924833730445701'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/montavista-linux-professional-edition.html' title='MontaVista Linux Professional Edition 3.1 Preview Kit'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-5571811399129268500</id><published>2008-04-25T07:36:00.000-07:00</published><updated>2008-04-26T03:02:53.115-07:00</updated><title type='text'>unix introduction tips</title><content type='html'>&lt;a href="http://www.unix.org/what_is_unix.html"&gt;What is UNIX®?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/unix98.html"&gt;UNIX 98&lt;/a&gt;  &lt;a href="http://www.unix.org/unix03.html"&gt;UNIX 03&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/version3/"&gt;The Single UNIX Specification Version 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/version3/iso_std.html"&gt;ISO/IEC 9945&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/version3/apis.html"&gt;UNIX System API Tables&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/whitepapers/"&gt;White Papers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/certification/idx/unix.html"&gt;UNIX Certification&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/resources.html"&gt;Resources&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/slides.html"&gt;Slide Presentations&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/testing/downloads.html"&gt;Test Tool Downloads&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.org/questions_answers.html"&gt;Questions and Answers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/contacts/"&gt;Contacts&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/platform/"&gt;The Platform Forum projects&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/platform/single_unix_specification/"&gt;The Single UNIX Specification&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/platform/unix_certification/"&gt;The UNIX Certification &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-5571811399129268500?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/5571811399129268500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=5571811399129268500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5571811399129268500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5571811399129268500'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/unix-introduction-tips.html' title='unix introduction tips'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1001983566968171590.post-5982029120216579709</id><published>2008-04-25T07:31:00.000-07:00</published><updated>2008-04-25T08:13:39.029-07:00</updated><title type='text'>this blog gives  tips about  software updates</title><content type='html'>Unix (officially trademarked as UNIX®, sometimes also written as Unix or Unix® with small caps) is a computer operating system originally developed in 1969 by a group of AT&amp;amp;T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. Today's Unix systems are split into various branches, developed over time by AT&amp;amp;T as well as various commercial vendors and non-profit organizations.&lt;br /&gt;&lt;br /&gt;As of 2007, the owner of the trademark UNIX® is The Open Group, an industry standards consortium. Only systems fully compliant with and certified to the Single UNIX Specification qualify as "UNIX®" (others are called "Unix system-like" or "Unix-like").&lt;br /&gt;&lt;br /&gt;During the late 1970s and early 1980s, the influence of Unix, in academic circles, led to large-scale adoption of Unix (particularly of the BSD variant, originating from the University of California, Berkeley) by commercial startups, the most notable of which is Sun Microsystems. Today, in addition to certified Unix systems, Unix-like operating systems such as Linux and BSD are commonly encountered. Sometimes, "traditional Unix" may be used to describe a Unix or an operating system that has the characteristics of either Version 7 Unix or UNIX System V.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1001983566968171590-5982029120216579709?l=dv-reviews.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dv-reviews.blogspot.com/feeds/5982029120216579709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1001983566968171590&amp;postID=5982029120216579709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5982029120216579709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1001983566968171590/posts/default/5982029120216579709'/><link rel='alternate' type='text/html' href='http://dv-reviews.blogspot.com/2008/04/this-blog-gives-tips-about-software.html' title='this blog gives  tips about  software updates'/><author><name>SATYA.DV</name><uri>http://www.blogger.com/profile/01051314988222170660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
