Showing posts with label Unix. Show all posts
Showing posts with label Unix. Show all posts

Programming From The Ground Up by Jonathan Bartlett

                                    


                                                   Download it -   Click here

The UNIX Time-Sharing System By D. M. Ritchie and K. Thompson


The UNIX Time-Sharing System

By D. M. Ritchie and K. Thompson
Unix is a general-purpose, multi-user, interactive operating system for the larger Digital Equipment Corporation PDP-11 and the Interdata 8/32 computers. It offers a number of features seldom found even in larger operating systems, including
  • A hierarchical file system incorporating demountable volumes,
  • Compatible file, device, and inter-process I/O,
  • The ability to initiate asynchronous processes,
  • System command language selectable on a per-user basis,
  • Over 100 subsystems including a dozen languages,
  • High degree of portability.
This paper discusses the nature and implementation of the file system and of the user command interface.

The Evolution of the Unix Time-sharing System By Dennis M. Ritchie


The Evolution of the Unix Time-sharing System

By Dennis M. Ritchie
This paper presents a brief history of the early development of the Unix operating system. It concentrates on the evolution of the file system, the process-control mechanism, and the idea of pipelined commands. Some attention is paid to social conditions during the development of the system.
NOTE: *This paper was first presented at the Language Design and Programming Methodology conference at Sydney, Australia, September 1979. The conference proceedings were published as Lecture Notes in Computer Science #79: Language Design and Programming Methodology, Springer-Verlag, 1980. This rendition is based on a reprinted version appearing in AT&T Bell Laboratories Technical Journal 63 No. 6 Part 2, October 1984, pp. 1577-93.

The UNIX Time-sharing System--A Retrospective By Dennis M. Ritchie


The UNIX Time-sharing System--A Retrospective

By Dennis M. Ritchie
UNIX is a general-purpose, interactive time-sharing operating system for the DEC PDP-11 and Interdata 8/32 computers. Since it became operational in 1971, it has become quite widely used. This paper discusses the strong and weak points of UNIX and some areas where we have expended no effort. The following areas are touched on:
  • The structure of files: a uniform, randomly-addressable sequence of bytes. The irrelevance of the notion of ``record.'' The efficiency of the addressing of files.
  • The structure of file system devices; directories and files.
  • I/O devices integrated into the file system.
  • The user interface: fundamentals of the shell, I/O redirection, and pipes.
  • The environment of processes: system calls, signals, and the address space.
  • Reliability: crashes, losses of files.
  • Security: protection of data from corruption and inspection; protection of the system from stoppages.
  • Use of a high-level language--the benefits and the costs.
  • What UNIX does not do: ``real-time,'' interprocess communication, asynchronous I/O.
  • Recommendations to system designers.
NOTE: * A version of this paper was presented at the Tenth Hawaii International Conference on the System Sciences, Honolulu, January, 1977.

Introduction To Unix Signals Programming


Introduction To Unix Signals Programming

What Are Signals?
Signals, to be short, are various notifications sent to a process in order to notify it of various "important" events. By their nature, they interrupt whatever the process is doing at this minute, and force it to handle them immediately. Each signal has an integer number that represents it (1, 2 and so on), as well as a symbolic name that is usually defined in the file /usr/include/signal.h or one of the files included by it directly or indirectly (HUP, INT and so on. Use the command 'kill -l' to see a list of signals supported by your system).
Each signal may have a signal handler, which is a function that gets called when the process receives that signal. The function is called in "asynchronous mode", meaning that no where in your program you have code that calls this function directly. Instead, when the signal is sent to the process, the operating system stops the execution of the process, and "forces" it to call the signal handler function. When that signal handler function returns, the process continues execution from wherever it happened to be before the signal was received, as if this interruption never occurred......

The Art of Unix Programming By Eric Steven Raymond


The Art of Unix Programming

By Eric Steven Raymond
You should read this book if you are an experienced Unix programmer who is often in the position of either educating novice programmers or debating partisans of other operating systems, and you find it hard to articulate the benefits of the Unix approach.
You should read this book if you are a C, C++, or Java programmer with experience on other operating systems and you are about to start a Unix-based project.
You should read this book if you are a Unix user with novice-level up to middle-level skills in the operating system, but little development experience, and want to learn how to design software effectively under Unix.
You should read this book if you are a non-Unix programmer who has figured out that the Unix tradition might have something to teach you. We believe you're right, and that the Unix philosophy can be exported to other operating systems. So we will pay more attention to non-Unix environments (especially Microsoft operating systems) than is usual in a Unix book; and when tools and case studies are portable, we say so.
You should read this book if you are an application architect considering platforms or implementation strategies for a major general-market or vertical application. It will help you understand the strengths of Unix as a development platform, and of the Unix tradition of open source as a development method.
You should not read this book if what you are looking for is the details of C coding or how to use the Unix kernel API. There are many good books on these topics; Advanced Programming in the Unix Environment [Stevens92] is classic among explorations of the Unix API, and The Practice of Programming [Kernighan-Pike99] is recommended reading for all C programmers (indeed for all programmers in any language).

Practical UNIX & Internet Security (Review only)


Practical UNIX & Internet Security (Review only)

This book is written by Simson Garfinkel and Gene Spafford. With the help of this UNIX internet security book you can learn various UNIX based computer security basics and policies. You can understand UNIX user responsibilities, UNIX system security and backups, etc. Moreover you will learn UNIX network and internet security such as firewalls, proxies, wrappers, secure suid, etc and more.

UNIX Help : Commands and Tips


UNIX Help : Commands and Tips

Eggdrop shell support
satexas.com
What are the basic commands in Unix to move around my account?
  • pwd [Tells you your current directory (in full)]
  • cd [Takes you to your HOME (starting directory)]
  • cd .. [Moves you backwards one directory]
  • cd /dir/dir [Moves you to a particular directory]
What are the basic Unix commands to copy & move files?
  • cp file file2 [opies the file to file2
  • mv file newfile [Moves, or renames, the file]
  • rm file [Removes the file permanently]
  • rm -rf file [Forces a removal of a file]
  • rm -rf dirname [Removes a directory, and all it's subdirectories]
Click to Read More

UNIX ON-LINE Man Pages - Solaris Service By David Adams


UNIX ON-LINE Man Pages - Solaris Service

By David Adams
These are the UNIX man pages for the Solaris service, converted to html on the fly by a shell script. Here are the intro pages of each section:
This Unix online manual contains commands available with unix operating system, system administrators commands, commands that are used chiefly for system maintenance and administration purposes, commands found only in the SunOS/BSD Compatibility Package, commands for communicating with other systems, commands associated with Form and Menu Language Interpreter (FMLI), commands specific to the SunOS system, system calls, functions found in various Solaris libraries, shared library and each header used by functions, macros, and external variables, formats of various files, POSIX (IEEE) Standards and the X/Open Specifications, macros, Federated Naming Service (fns, fns_initial_context, fns_policies, and fns_references), character and block devices, STREAMS modules, network protocols, file systems, ioctl requests for driver subsystems and classes.......

Unix Tutorials Little Unix Programmers Group (LUPG)


Unix Tutorials

Little Unix Programmers Group (LUPG)
The following set of tutorials reflects an effort to give Unix programmers and programmers wanna-be a chance to get familiar with various aspects of programming on Unix-like systems, without the need to buy an expensive set of books and spending a lot of time in understanding lots of technical material. The one assumption common to all tutorials (unless stated otherwise) is that you already know C programming on any system.
The general intention is to allow someone to get familiar with a subject rather quickly, so they can start experimenting with it, and allow them to read a more thorough user manual or reference manual after they got over the initial "fear". By no means will these tutorials suffice to turn anyone into a proficient professional, but one needs to start somewhere and then again, why not do it for free?
Tutorials Index (note - each tutorial may be browsed online, or downloaded as a .tar.gz archive). Size of each tutorial is given in ammount of screen-pages when viewed using the lynx text-based web browser (assuming 25 lines per page):
Unix Beginners
Compiling C/C++ Programs On Unix (archive) (~15 lynx pages)
Debugging With "gdb" (archive) (~11 lynx pages)
Automating Program Compilation Using Makefiles (archive) (~13 lynx pages)
Manipulating Files And Directories In Unix (archive) (~50 lynx pages)
Intermediate Level
Creating And Using C Libraries (archive) (~18 lynx pages)
Unix Signals Programming (archive) (~29 lynx pages)
Internetworking With Unix Sockets (archive) (~21 + ~44 lynx pages)
Accessing User Information On A Unix System (archive) (~38 lynx pages)
Graphics Programming
Basic Graphics Programming With The Xlib Library (archive) (~59 + ~44 lynx pages)
Advanced Topics
Unix And C/C++ Runtime Memory Management For Programmers (archive) (~69 lynx pages)
Parallel Programming - Basic Theory For The Unwary (archive) (~29 lynx pages)
Multi-Threaded Programming With The Pthreads Library (archive) (~60 lynx pages)
Multi-Process Programming Under Unix (archive) (~80 lynx pages)

Unix FAQ/faq


Unix FAQ/faq

faqs.org
Subject: When someone refers to 'rn(1)' ... the number in parentheses mean?
Date: Tue, 13 Dec 1994 16:37:26 -0500
1.2) When someone refers to 'rn(1)' or 'ctime(3)', what does the number in parentheses mean?
It looks like some sort of function call, but it isn't. These numbers refer to the section of the "Unix manual" where the appropriate documentation can be found. You could type "man 3 ctime" to look up the manual page for "ctime" in section 3 of the manual.
The traditional manual sections are:
  1. User-level commands
  2. System calls
  3. Library functions
  4. Devices and device drivers
  5. File formats
  6. Games
  7. Various miscellaneous stuff - macro packages etc.
  8. System maintenance and operation commands
Some Unix versions use non-numeric section names. For instance, Xenix uses "C" for commands and "S" for functions. Some newer versions of Unix require "man -s# title" instead of "man # title". Each section has an introduction, which you can read with "man # intro" where # is the section number. Sometimes the number is necessary to differentiate between a command and a library routine or system call of the same name. For instance, your system may have "time(1)", a manual page about the 'time' command for timing programs, and also "time(3)", a manual page about the 'time' subroutine for determining the current time.
You can use "man 1 time" or "man 3 time" to specify which "time" man page you're interested in. You'll often find other sections for local programs or even subsections of the sections above - Ultrix has sections 3m, 3n, 3x and 3yp among others.

Sams UNIX Unleashed, Internet Edition


Sams UNIX Unleashed, Internet Edition

Robin Burk and David B. Horvath, CCP, et al
© Copyright, Macmillan Computer Publishing. All rights reserved.
Our highly popular first edition brought comprehensive, up-to-date information on UNIX to a wide audience. That original edition was already 1,600 pages. The new topics covered in this edition have obliged us to split the second edition into two volumes, namely, the System Administrator's Edition and the Internet Edition, which we'll refer to jointly as "the new" or the second edition. Though each volume can stand alone and may be read independently of the other, they form a complementary set with frequent cross-references. This new edition is written for:
  • People new to UNIX
  • Anyone using UNIX who wants to learn more about the system and its utilities
  • Programmers looking for a tutorial and reference guide to C, C++, Perl, awk, and the UNIX shells
  • System administrators concerned about security and performance on their machines
  • Webmasters and Internet server administrators
  • Programmers who want to write Web pages and implement gateways to server databases
  • Anyone who wants to bring his or her UNIX skills and knowledge base up-to-date
A lot has happened in the UNIX world since the first edition of UNIX Unleashed was released in 1994. Perhaps the most important change is the tremendous growth of the Internet and the World Wide Web. Much of the public Internet depends on UNIX-based servers. In addition, many corporations of all sizes have turned to UNIX as the environment for network and data servers. As UNIX fans have long known, the original open operating system is ideal for connecting heterogeneous computers and networks into a seamless whole.

An Introduction to the UNIX Make Utility


An Introduction to the UNIX Make Utility

mtsu.edu
This paper is a short introduction to the UNIX make utility. The intended audience is computer science students at Middle Tennessee State University (MTSU) of intermediate ability level, if you're taking CSCI 217 this paper will be of use to you. Although make can be used in conjunction with most programming languages all examples given here use C++ as this is the most common programming language used at MTSU. It is assumed that you have a good understanding of a C++ compiler. As an introduction this paper intends to teach the reader how to use the most common features of make. A more comprehensive guide may be found by examining the list of references provided.
Layout guide
Throughout the paper various text styles will be used to add meaning and focus on key points. All references to the make utility, file names and any sample output use the fixed font style, i.e. fixed font example. If the example is prefixed with a percent character ( % ) it is a UNIX C-shell command line. Words that are key to make terminology are highlighted in bold when they occur for the first time.
Overview
The make utility is a software engineering tool for managing and maintaining computer programs. Make provides most help when the program consists of many component files. As the number of files in the program increases so to does the compile time, complexity of compilation command and the likelihood of human error when entering command lines, i.e. typos and missing file names.
By creating a descriptor file containing dependency rules, macros and suffix rules, you can instruct make to automatically rebuild your program whenever one of the program's component files is modified. Make is smart enough to only recompile the files that were affected by changes thus saving compile time.

Compiling "C" And "C++" Programs On Unix Systems - gcc/g++ by guy keren


Compiling "C" And "C++" Programs On Unix Systems - gcc/g++

by guy keren
This document tries to give the reader basic knowledge in compiling C and C++ programs on a Unix system. If you've no knowledge as to how to compile C programs under Unix (for instance, you did that until now on other operating systems), you'd better read this tutorial first, and then write a few programs before you try to get to gdb, makefiles or C libraries. If you're already familiar with that, it's recommended to learn about makefiles, and then go and learn other C programming topics and practice the usage of makefiles, before going on to read about C libraries. This last issue is only relevant to larger projects, while makefiles make sense even for a small program composed of but a few source files.
As a policy, we'll stick with the basic features of programming tools mentioned here, so that the information will apply to more than a single tool version. This way, you might find the information here useful, even if the system you're using does not have the GNU tools installed.
In this lovely tutorial, we'll deal with compilation of a C program, using the compiler directly from the command line. It might be that you'll eventually use a more sophisticated interface (an IDE - Integrated Development Environment) of some sort, but the common denominator you'll always find is the plain command line interface. Further more, even if you use an IDE, it could help you understand how things work "behind the scenes". We'll see how to compile a program, how to combine several source files into a single program, how to add debug information and how to optimize code.

Manipulating Files And Directories In Unix By guy keren


Manipulating Files And Directories In Unix

By guy keren
The following tutorial describes various common methods for reading and writing files and directories on a Unix system. Part of the information is common C knowledge, and is repeated here for completeness. Other information is Unix-specific, although DOS programmers will find some of it similar to what they saw in various DOS compilers. If you are a proficient C programmer, and know everything about the standard I/O functions, its buffering operations, and know functions such as fseek() or fread(), you may skip the standard C library I/O functions section. If in doubt, at least skim through this section, to catch up on things you might not be familiar with, and at least look at the standard C library examples.
General Unix File System Structure
In the Unix system, all files and directories reside under a single top directory, called root directory, and denoted as "/". Even if the computer has several hard disks attached, they are all combined in a single directories tree. It is up to the system administrator to place all disks on this tree. Each disk is being connected to some directory in the file system. This connection operation is called "mount", and is usually done automatically when the system starts running.

Unix Unleashed By Sams Publishing


Unix Unleashed

By Sams Publishing
Part I starts with a tutorial on "Finding Your Way Around UNIX." Robert and Rachel Sartin, Jeff Smith, Rick Rummel, Pete Holsberg, Ron Dippold and Dave Taylor give an introduction to operating systems. In Part I, you will find a step-by-step tutorial on how to log on the UNIX system and how to do some basic commands. There is also a complete introduction to all the file listing commands, file tools, and editing text files. You will also find a quick guide to navigating the network and methods to communicate with other systems on your network.
In Part II, "Hunt for Shells," Rick Rummel and John Valley teach you how to develop shell scripts for the Bourne Shell, Korn Shell, and C Shell.
In Part III, "Programming," Ann Marshall, David Till, and James Armstrong teach you how to program awk and Perl and how to use the UNIX C compiler.
In Part IV, "Process Control," Robert and Rachel Sartin give you an introduction to how to control your programs on UNIX. Here you find how to start a job (program) and how to kill it.
In Part V, "Text Formatting and Printing," James Armstrong and Susan Peppard give instruction on how to use these powerful macros, and how to create text with graphs, pictures, equations, etc. Learn how to create man pages and how to print postscript.
In Part VI, "Advanced File Utilities," Robert and Rachel Sartin and S. Lee Henry teach you how to put your programs or text into version control, how to back up and archive your work for protection against hard disk crashes, and more.
In Part VII, "System Administration," Sydney Weinstein, Chris Negus, Scott Parker, Ron Rose, Salim Douba, Jeff Smith, and James Armstrong teach the basics of UNIX System Administration. Here you will learn how to install UNIX, how to create user accounts, how to partition disk drives, and how to administer security, mail, uucp, and news.
Finally, in Part VIII, "UNIX Flavors and Graphical User Interfaces," S. Lee Henry and Kamran Husain give an overview of the history of UNIX and where it is going. You will learn how to navigate X Window and, for the more advanced, how to program in the GUI environment.

UNIXhelp for Users


UNIXhelp for Users

Computing Services
University of Edinburgh
Helpful information for users of the UNIX operating system, developed at the University of Edinburgh from work funded by the ITTI. Please read this disclaimer.
UNIXhelp is mirrored around the world and freely available for local installation. This is Version 1.3.
Tasks
  • Getting started
  • Working with files and directories
  • Managing your working environment
  • Controlling access to your files and directories
  • Sending and receiving electronic mail
  • Editing text files
  • Managing jobs and processes
  • Writing shell scripts
Commands
  • Using UNIX commands
  • Looking-up commands in the on-line manual
  • Alphabetical list of the most popular commands
  • UNIX commands for VMS users
  • UNIX commands for DOS users
Concepts
  • What is an operating system?
  • The UNIX file system
  • Understanding commands and processes
  • The shell
Utilities
  • Program development tools
  • Text editors
  • File manipulation utilities
  • File transfer utilities
  • UNIX shells

UNIX Unleashed, System Administrator's Edition By Robin Burk and David B. Horvath


UNIX Unleashed, System Administrator's Edition

By Robin Burk and David B. Horvath
This edition of UNIX Unleashed includes a substantial amount of new information describing Internet and World Wide Web technologies in UNIX. New topics include:
  • Programming Web pages with HTML
  • Object-oriented programming in C++
  • Programming Common Gateway Interfaces (CGI) using Perl, C/C++, HTML, and the UNIX shells
  • MIME, the Multipurpose Internet Mail Extension
  • HTTP, the HyperText Transfer Protocol
  • Web servers and server performance
As UNIX becomes the platform of choice for critical network and data applications, UNIX vendors have placed increased emphasis on system maturity, ease-of-use, and security capabilities. Even with the growth of Microsoft Windows NT, UNIX still has a place in the industry. It is more mature, more stable, more scaleable, and has a wider array of applications than NT. Many people claim that NT is the open operating system of the future; that may be true (I have my own personal opinion), but for now, UNIX holds that place.
We've also updated this edition of UNIX Unleashed to bring you current information regarding:
  • Frequently Asked Questions (FAQs) about the most popular variants of UNIX
  • Security issues and the technologies you can use to protect your system and its information against intruders and malicious users
  • The most popular Graphical User Interfaces (GUIs)
As with the original edition, we set out to bring users the most comprehensive, useful, and up-to-date UNIX guide. To meet this goal, we've added nearly two dozen new chapters and have revised much of the original material in the book. The resulting book is so large that it is now divided into two volumes. The System Administrator's Edition introduces UNIX and contains much of the information required for basic users and for systems administrators. The Internet Edition includes advanced information for programmers, Internet/Web developers, and those who need detailed information regarding specific UNIX flavors.

UNIX Unleashed, Internet Edition By Robin Burk and David B. Horvath



Our highly popular first edition brought comprehensive, up-to-date 

UNIX Unleashed, Internet Edition

By Robin Burk and David B. Horvathinformation on UNIX to a wide audience. That original edition was already 1,600 pages. The new topics covered in this edition have obliged us to split the second edition into two volumes, namely, the System Administrator's Edition and the Internet Edition, which we'll refer to jointly as "the new" or the second edition. Though each volume can stand alone and may be read independently of the other, they form a complementary set with frequent cross-references. This new edition is written for:
  • People new to UNIX
  • Anyone using UNIX who wants to learn more about the system and its utilities
  • Programmers looking for a tutorial and reference guide to C, C++, Perl, awk, and the UNIX shells
  • System administrators concerned about security and performance on their machines
  • Webmasters and Internet server administrators
  • Programmers who want to write Web pages and implement gateways to server databases
  • Anyone who wants to bring his or her UNIX skills and knowledge base up-to-date
A lot has happened in the UNIX world since the first edition of UNIX Unleashed was released in 1994. Perhaps the most important change is the tremendous growth of the Internet and the World Wide Web. Much of the public Internet depends on UNIX-based servers. In addition, many corporations of all sizes have turned to UNIX as the environment for network and data servers. As UNIX fans have long known, the original open operating system is ideal for connecting heterogeneous computers and networks into a seamless whole.

Basic Unix Tutorial


Basic Unix Tutorial

The University of Chicago
If you are just starting with Unix, you should probably begin by reading theUnix: Getting Your Feet Wet document. If you're already using Unix, or know the information in the "Unix: Getting Your Feet Wet" document, this "Basic Unix" document includes a lot of further information.
So What is Unix, Exactly
Unix is a computer operating system first developed at Bell Labs (and, to get the legal language out of the way, a trademark of AT&T Bell Laboratories). An "operating system" is a master program which coordinates other programs' activities and manages files.
One of the most popular and widespread operating systems in the world, Unix runs on more brands of computers than probably any other operating system in existence. This is partly because Unix is "portable": it is written in C, a high-level, machine-independent language. Programs written on one Unix machine can be easily adapted to other Unix machines (C is particularly well-integrated with the operating system itself).
In addition, Unix is based on a collection of small, easily understood utilities which allow you to connect them in many different ways (and in ways that the authors did not predict), building procedures and sophisticated tasks to suit your own needs. This "Unix philosophy" is often contrasted with monolithic programming environments (IBM mainframes or the Macintosh *** are sometimes mentioned) in which you can only perform tasks the system designers could predict; such systems, while becoming increasingly complex, often have bells and whistles you may not use, and lack those you want.