Welcome to the Advanced C Programming Learning Repository! This repository is designed to help you track your progress and explore advanced concepts in C programming. Each topic is accompanied by checkboxes so you can monitor your progress as you learn and implement these concepts.
- Thread creation and termination
- Mutexes and condition variables
- Thread synchronization
- Understanding signals in Unix/Linux
- Writing signal handlers
- Blocking and unblocking signals
- Low-level file I/O (open, read, write, close)
- Directory handling
- File permissions
- Socket programming (TCP/UDP)
- Server-client communication
- Network protocols and data serialization
- Creating shared libraries
- Linking shared libraries
- Using dlopen and dlsym
- Writing Makefiles for multi-file projects
- Using variables and rules
- Debugging with Makefile targets
- Accessing and controlling peripherals like cameras and mice
- Using the Linux Input Subsystem
- Communicating with hardware via USB and serial ports
- Introduction to system calls
- Process control (fork, exec, wait)
- File and directory operations
- Pipes
- Message queues
- Shared memory
- Semaphores
- Basics of kernel modules
- Loading and unloading modules
- Interfacing with user space
- Inline assembly
- Examining assembly output from C code
- Writing mixed C and assembly programs
- Creating sockets
- Managing multiple connections
- Secure communication (SSL/TLS)
- Writing portable code
- Using platform-specific libraries
- Handling platform-specific constraints
- Using errno and strerror
- Writing custom error codes
- Macros and conditional compilation
- Variadic macros
- Embedding assembly in C code
- Using gdb for debugging
- Profiling tools like gprof
- Creating and linking static and dynamic libraries
- Using shared libraries
- Implementing malloc/free
- Advanced file handling techniques
- Buffered and unbuffered I/O
- File locking and concurrency