Category: UNIX

Beej’s Guide to Unix Interprocess Communication

My image
  • Author: Brian “Beej Jorgensen” Hall
  • Format: Online HTML, Archived HTML, PDF
  • Price: free

You know what’s easy? fork() is easy. You can fork off new processes all day and have them deal with individual chunks of a problem in parallel. Of course, its easiest if the processes don’t have to communicate with one another while they’re running and can just sit there doing their own thing.

However, when you start fork()’ing processes, you immediately start to think of the neat multi-user things you could do if the processes could talk to each other easily. So you try making a global array and then fork()’ing to see if it is shared. (That is, see if both the child and parent process use the same array.) Soon, of course, you find that the child process has its own copy of the array and the parent is oblivious to whatever changes the child makes to it.

How do you get these guys to talk to one another, share data structures, and be generally amicable? This document discusses several methods of Interprocess Communication (IPC) that can accomplish this, some of which are better suited to certain tasks than others.

As long as you know some C or C++, this guide should springboard you into the realm of Unix IPC with hopefully as little hassle as humanly possible!

Chapters include:

  • Intro
  • A fork() Primer
  • Signals
  • Pipes
  • FIFOs
  • File Locking
  • Message Queues
  • Semaphores
  • Shared Memory Segments
  • Memory Mapped Files
  • Unix Sockets
  • More IPC Resources

http://beej.us/guide/bgipc/

Bash Guide for Beginners

My image
  • Author: Machtelt Garrels
  • Format: online HTML
  • Price: free

The primary reason for this document is that a lot of readers feel the existing  HOWTO to be too short and incomplete, while the Bash Scripting guide is too much of a reference work. There is nothing in between these two extremes. It was also written on the general principal that not enough free basic courses are available, though they should be.

This is a practical guide which, while not always being too serious, tries to give real-life instead of theoretical examples. It was partly written because the author doesn’t get excited with stripped down and over-simplified examples written by people who know what they are talking about, showing some really cool Bash feature so much out of its context that you cannot ever use it in practical circumstances. You can read that sort of stuff after finishing this book, which contains exercises and examples that will help you survive in the real world.

From the author’s experience as a UNIX/Linux user, system administrator and trainer, he knows that people can have years of daily interaction with their systems, without having the slightest knowledge of task automation. Thus they often think that UNIX is not user friendly, and even worse, they get the impression that it is slow and old-fashioned. This problem is another one that can be remedied by this guide.

Chapters include:

  • Introduction
  • Bash and Bash scripts
  • Writing and debugging scripts
  • The Bash environment
  • Regular expressions
  • The GNU sed stream editor
  • The GNU awk programming language
  • Conditional statements
  • Writing interactive scripts
  • Repetitive tasks
  • More on variables
  • Functions
  • Catching signals

http://www.linuxtopia.org/online_books/bash_guide_for_beginners/index.html

Cross-Platform GUI Programming with wxWidgets

My image
  • Author: Julian Smart, Kevin Hock, Stefan Csomor
  • Format: PDF
  • Price: free

wxWidgets is an easy-to-use, open source C++ API for writing GUI applications that run on Windows, Linux, Unix, Mac OS X, and even Pocket PC, supporting each platform’s native look and feel with virtually no additional coding.

Now, its creator and two leading developers teach you all you need to know to write robust cross-platform software with wxWidgets. This book covers everything from dialog boxes to drag-and-drop, from networking to multithreading. It includes all the tools and code you need to get great results, fast.

From AMD to AOL, Lockheed Martin to Xerox, world-class developers are using wxWidgets to save money, increase efficiency, and reach new markets. With this book, you can, too.

Chapters include:

  • Introduction
  • Getting Started
  • Event Handling
  • Window Basics
  • Drawing and Printing
  • Handling Input
  • Window Layout Using Sizers
  • Using Standard Dialogs
  • Writing Custom Dialogs
  • Programming with Images
  • Clipboard and Drag and Drop
  • Advanced Window Classes
  • Files and Streams
  • Memory Management, Debugging, and Error Checking
  • Writing International Applications
  • Writing Multithreaded Applications
  • Programming with wxSocket
  • Working with Documents and Views
  • Perfecting Your Application
  • Installing wxWidgets
  • Building Your Own wxWidgets Applications
  • Creating Applications with DialogBlocks
  • Other Features in wxWidgets
  • Third-Party Tools for wxWidgets
  • wxWidgets Application Showcase
  • How wxWidgets Processes Events
  • Event Classes and Macros
  • Code Listings
  • Porting from MFC

http://www.phptr.com/content/images/0131473816/downloads/0131473816_book.pdf

C++ GUI Programming with Qt 3

My image
  • Author: Jasmin Blanchette, Mark Summerfield
  • Format: PDF
  • Price: free

This book covers all you need to build industrial-strength applications with Qt 3.2.x and C++–applications that run natively on Windows, Linux/Unix, Mac OS X, and embedded Linux with no source code changes!

The book teaches solid Qt programming practices; it is not a rehash of the documentation.

Already using Qt or just starting out? Evaluating Qt or managing it? Building open source applications–or commercial applications? Want to develop for Windows without buying an expensive compiler? Whatever your goal, this is the only book you need.

Chapters include:

  • Getting Started
  • Creating Dialogs
  • Creating Main Windows
  • Implementing Application Functionality
  • Creating Custom Widgets
  • Layout Management
  • Event Processing
  • 2D and 3D Graphics
  • Drag and Drop
  • Input/Output
  • Container Classes
  • Databases
  • Networking
  • XML
  • Internationalization
  • Providing Online Help
  • Multithreading
  • Platform-Specific Features
  • Installing Qt
  • Qt’s Class Hierarchy

http://www.informit.com/content/images/0131240722/downloads/blanchette_book.pdf