Systems and Network Programming for UNIX

Course

In Carshalton

£ 1,750 + VAT

Description

  • Type

    Course

  • Location

    Carshalton

  • Duration

    5 Days

Extensive hands-on exercises help you gain confidence in writing software to exploit the system features of Unix. Exercises include: Taking a snapshot of the filesystem and reporting changes. Creating a simple web server. Writing a client to transfer files using the TFTP service. Developing a graphical front end to a linux command-line tool. Measuring the efficiency of. Suitable for: The course is intended primarily for software developers writing or porting code in the UNIX/Linux environment. The course is also valuable for technical managers and system designers wishing to understand the capabilities of Unix at a programming level. Attendees should have a reasonable understanding of the C language. Although unnecessarily complex language structures are avoided in the course, the design of some of the API calls require that attendees are comfortable.

Facilities

Location

Start date

Carshalton (Surrey)
See map
1-3 Fairlands House, North Street, SM5 2HW

Start date

On request

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

Course programme

Overview
This course focuses on the "virtual machine" provided by the unix kernel to application software.
The course covers all major system programming features of Unix, from basic I/O operations to interprocess and network communications, to the exploitation of concurrency through the use of threads and processes.
The C language bindings are invariably used to document the system call interface, and C is still the language of choice for most Linux systems programming. For these reasons, C is used for the examples in this course.

Key Skills
After taking this course you will be able to:
  • Write programs which interact with the Linux system
  • Access and modify file data, permissions and ownership
  • Exploit concurrency through processes and threads
  • Develop client/server applications that communicate across a network
  • Write graphical applications using libraries and toolkits
  • Communicate efficiently between processes
  • Write and distribute software to run on a variety of platforms

Practical Work
Extensive hands-on exercises help you gain confidence in writing software to exploit the system features of Unix. Exercises include:
  • Taking a snapshot of the filesystem and reporting changes
  • Creating a simple web server
  • Writing a client to transfer files using the TFTP service
  • Developing a graphical front end to a linux command-line tool
  • Measuring the efficiency of buffered and unbuffered I/O
  • Traversing the filesystem to search for world-writable files

Course Contents
Getting Started
  • The "Hello World" program
  • Receiving command line arguments
  • Accessing environment variables
  • Reading and writing stdin and stdout
  • How to detect and handle system call errors
Multiprocessing
  • The memory model and life cycle of a process
  • Creating processes with fork
  • Executing programs with exec
  • Waiting for process termination
  • Returning and retrieving exit status
Multithreading
  • The memory model and life cycle of a thread
  • Creating threads with the pthreads API
  • Waiting for thread termination
  • How are threads and processes different?
  • Synchronising access to shared data
  • When to use multiple processes and threads
Basic I/O
  • Low-level input and output
  • Reading and writing files
  • Changing file attributes
  • Managing files and directories
Interprocess Communication
  • Pipes
  • Message queues
  • Shared Memory
  • Semaphores
Signals
  • What are signals for?
  • Sending signals
  • Ignoring and catching signals
  • Writing signal handlers
Working with the Unix Security Model
  • Changing file permissions and ownerships
  • Accessing the user account database
  • Setting user identity of a process
  • Working with Access Control Lists
Network Communication
  • TCP/IP fundamentals
  • Client/server programming
  • Connection-oriented sockets
  • Connectionless sockets
  • Name resolution
Writing graphical applications
  • The Xlib libraries
  • The Tk and Tcl toolkits
  • Drag and drop interface construction with glade
  • The Gnome and KDE toolkits
The Unix development environment
  • The traditional build model
  • Header files
  • Automating rebuilds with make
  • Writing platform-independent code with GNU configure
  • Integrated development environments
  • Commercial development environments

Systems and Network Programming for UNIX

£ 1,750 + VAT