Basics of C
- Compile And Run a C Program
- Print To STDOUT (Standard Out)
- The #include Statement
- Functions
- Function Prototypes
- chars
- Arrays
- sizeof
- Strings
- Get The Length Of A String
- Getting User Input
- Lvalues And Rvalues
- Casting
- Booleans
- For Loop
- Check If a Character Is An Alphabet
- Check If a Character Is a Number
- Change To Uppercase Or Lowercase
- The Ternary Operator (?:)
- Managing Loops
- Constants
- Using Header Files
- The & Operator
- Pointers
- Comparing Strings
- Copying Strings
- Take a Look At The Standard Header Files like stdio.h and stdlib.h
- The sprintf() function
- Convert Strings To Numbers
- Catching a Signal
- Global vs Local Variables
- Linkage
- Storage Duration
- Register Variables
- The malloc() function
- The free() function
- Command-line Arguments
- Terminate The Program
- Opening Files
- Closing Files
- Concatenate Strings
- Reading From a File
- Writing To a File
- Basics Of Structs
- More On Structs
- Saving Structs In a File And Reading Structs From a File
- Enumerated Types (enums)
- Typedefs
- Using Flags In Your Program
- Reading An Environment Variable
- File Access Modes
- How To Create And Use a Static Library
- Debugging With The Gnu Debugger (gdb)
- Assertions
- Using make To Compile Programs
- See List Of All Signals Available On Your Computer
- See Currently Running Processes
- Get Notified When a Child Process Terminates (exits) Or Stops
- Error Handling
- Change Current Directory Of The Calling Process
- Opening Files - System Call
- Writing To a File - System Call
- Reading From a File - System Call
- Closing Files - System Call
- lseek
- Duplicate a File Descriptor
- Get The File Descriptor Associated With a File Stream
- How To Create And Use a Shared Library
- The exec() Functions
- The fork() Function
- Zombies and Orphans
- Unnamed Pipes
- Named Pipes (FIFOs)
- Create a New Semaphore
- Change The Value Of a Semaphore
- Initializing and Deleting Semaphores
- Create Shared Memory
- Access and Use Shared Memory
- Detach Shared Memory
- Controlling Shared Memory
- A Complete Shared Memory Example
- Create a Message Queue
- Add a Message To a Message Queue
- Retrieve Messages From a Message Queue
- Deleting a Message Queue
- Create a Socket
- Using a Socket Part 1: Naming a Socket
- Using a Socket Part 2: Creating a Socket Queue
- Using a Socket Part 3: Accepting Connections
- Using a Socket Part 4: Requesting Connections
- Definitions / Macros with #define
- Creating a New Thread
- Waiting For a Thread
- Controlling Threads With Mutexes
- Initializing all elements of an array to have the same value