An open API service indexing awesome lists of open source software.

https://github.com/sccsmartcode/advanced-c-programming

Dive into advanced concepts of C programming, including memory management, multi-threading, file I/O, networking, system calls, hardware manipulation, and more. Track your progress and build professional-grade projects
https://github.com/sccsmartcode/advanced-c-programming

advanced-c c-programming custom-memory-allocators debugging error-handling file-io hardware-manipulation kernel-development makefiles memory-management multi-threading profiling socket-programming system-calls

Last synced: 11 days ago
JSON representation

Dive into advanced concepts of C programming, including memory management, multi-threading, file I/O, networking, system calls, hardware manipulation, and more. Track your progress and build professional-grade projects

Awesome Lists containing this project

README

          

# Advanced C Programming Learning Repository

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.

## Topics

### Multi-threading with Pthreads
- [ ] Thread creation and termination
- [ ] Mutexes and condition variables
- [ ] Thread synchronization

### Signal Handling
- [ ] Understanding signals in Unix/Linux
- [ ] Writing signal handlers
- [ ] Blocking and unblocking signals

### File Systems and I/O
- [ ] Low-level file I/O (open, read, write, close)
- [ ] Directory handling
- [ ] File permissions

### Networking in C
- [ ] Socket programming (TCP/UDP)
- [ ] Server-client communication
- [ ] Network protocols and data serialization

### Dynamic Libraries
- [ ] Creating shared libraries
- [ ] Linking shared libraries
- [ ] Using dlopen and dlsym

### Makefiles
- [x] Writing Makefiles for multi-file projects
- [x] Using variables and rules
- [ ] Debugging with Makefile targets

### Manipulating PC Hardware
- [ ] Accessing and controlling peripherals like cameras and mice
- [ ] Using the Linux Input Subsystem
- [ ] Communicating with hardware via USB and serial ports

### System Calls
- [ ] Introduction to system calls
- [ ] Process control (fork, exec, wait)
- [ ] File and directory operations

### Interprocess Communication (IPC)
- [ ] Pipes
- [ ] Message queues
- [ ] Shared memory
- [ ] Semaphores

### Writing Kernel Modules
- [ ] Basics of kernel modules
- [ ] Loading and unloading modules
- [ ] Interfacing with user space

### Understanding Assembly with C
- [ ] Inline assembly
- [ ] Examining assembly output from C code
- [ ] Writing mixed C and assembly programs

### Socket Programming
- [ ] Creating sockets
- [ ] Managing multiple connections
- [ ] Secure communication (SSL/TLS)

### Cross-platform Development
- [ ] Writing portable code
- [ ] Using platform-specific libraries
- [ ] Handling platform-specific constraints

### Error Handling
- [ ] Using errno and strerror
- [ ] Writing custom error codes

### Advanced Preprocessor Directives
- [ ] Macros and conditional compilation
- [ ] Variadic macros

### Inline Assembly
- [ ] Embedding assembly in C code

### Debugging and Profiling
- [ ] Using gdb for debugging
- [ ] Profiling tools like gprof

### C Libraries
- [ ] Creating and linking static and dynamic libraries
- [ ] Using shared libraries

### Custom Memory Allocators
- [ ] Implementing malloc/free

### File I/O
- [ ] Advanced file handling techniques
- [ ] Buffered and unbuffered I/O
- [ ] File locking and concurrency