Skip to content
/ C_Linux Public

Contains examples on using C Linux system call (fork, wait, thread, kill, pause, pipe, condition variable, mutex, semaphores, ...)

License

Notifications You must be signed in to change notification settings

Unix69/C_Linux

Repository files navigation

GNU/Linux Doxygen

C_Linux




A set of C-Unix examples showing usage of Unix syscall related to processes, threads, filesystem




🧠 Founder & Developer


Giuseppe Pedone

Giuseppe Pedone (Unix69)


📓 Table of Contents

Navigation index to fast explore the content:



Getting Started 🚀

Table of Contents

Follow these steps to getm, install and set up the project and generate the documentation:

  • Step 1 - Verify Prerequisites and Dependencies
    C_Linux needs to run on hosts equipped with specific hardware and software.
    So read carefully the prerequisites to respect and the dependencies to satisfy.

  • Step 2 - Get and Install
    Get the project package, then follow the installation procedure to correctly set up the environment.

  • Step 3 - Build
    Compile the source code and generate executable artifacts according to your build configuration.

  • Step 4 - Setup and Configure
    Adjust configuration files and system parameters required to customize the project behaviour.

  • Step 5 - Test and Verify
    Execute the test suite to validate that the build and configuration were successful.

  • Step 6 - Run
    Start the project using the provided startup script or command sequence.

  • Step 7 - Deploy
    Deploy the project into its target environment following the deployment guidelines.

  • Step 8 - Uninstall
    Remove the project and all its dependencies from the system safely and completely.



💻 Prerequisites

Before building or running the project, make sure you satisgy the prerequisites to run the project:

  • Operating System: GNU/Linux, Windows
  • Software Dependencies: GitHub, Doxygen, GNU Make `


📦 Dependencies

Before building and generating documentation with C_Linux, make sure the following dependencies are installed on your system:

  • GitHubOptional.
    Even if you don’t have a GitHub account or Git installed, you can still generate documentation locally.
    However, having a GitHub account and using Git is recommended for project deployment and version control.

  • DoxygenMandatory.
    Used to generate documentation from source code and Markdown files.
    The project won’t build documentation without it.

  • GNU MakeMandatory.
    Required to run automated build and documentation generation tasks.
    Used in this project to simplify commands such as:

    make doc

    and

    make clean

Below are the detailed installation steps for each dependency, both on Unix/Linux and Windows systems.



GitHub Install GitHub / Git

🐧 On GNU/Linux

sudo apt update
sudo apt install git

After installation, verify that Git is available:

git --version

To link your project to GitHub, create a free account at:
👉 https://github.com/signup

Then configure Git with your account details:

git config --global user.name "Your Name"
git config --global user.email "you@example.com"


Windows logo On Windows

  1. Download Git for Windows from:
    👉 https://git-scm.com/download/win

  2. Run the installer and follow the setup wizard (leave default options checked).

  3. After installation, open Git Bash and verify:

    git --version
    
  4. Optionally create a GitHub account at
    👉 https://github.com/signup



Doxygen Install Doxygen

🐧 On GNU/Linux

sudo apt update
sudo apt install doxygen graphviz

Verify the installation:

doxygen --version

Optionally, you can generate a sample configuration file with:

doxygen -g


Windows logo On Windows

  1. Download the Windows installer from:
    👉 https://www.doxygen.nl/download.html

  2. Run the .exe file and follow the setup wizard.

  3. After installation, open Command Prompt and check:

    doxygen --version
    
  4. To enable UML and graphs, install Graphviz as well:
    👉 https://graphviz.org/download/



GNU/Linux Install GNU Make

🐧 On GNU/Linux

GNU Make is usually preinstalled. Check it with:

make --version

If missing, install it via:

sudo apt update
sudo apt install make


Windows logo On Windows

You can install GNU Make in one of these ways:

✅ Option 1: Using MinGW

  1. Download and install MinGW from:
    👉 https://www.mingw-w64.org/
  2. During installation, select the “mingw32-make” package.
  3. Add MinGW’s bin directory to your system PATH.
  4. Verify installation:
    mingw32-make --version
    

You can then rename or alias it to make for convenience.

✅ Option 2: Using Chocolatey (recommended if available)

If you have Chocolatey package manager installed:

choco install make


💡 Dependencies Verification

After installing all dependencies, verify them with:

git --version
doxygen --version
make --version

If all commands return valid version numbers, you’re ready to build and document your project 🎉

💡 Tip: You can also run the doxygen.sh script from the root directory.
It will automatically:

  • Check that Doxygen is installed. If it is not installed, the doxygen.sh script will fail ❌ and do not proceed.
  • Otherwhise it: - Generate a base Doxyfile if missing into the root directory.
  •    - Apply the custom configuration for **C_Linux** on the Doxyfile
    


⭐ Installation

To install the project follow this setps:

A. You can download the repository from GitHub: ⬇️ https://github.com/Unix69/README-Template/archive/refs/heads/main.zip

manually or by opening a terminal into your project destination directory, and running the following commands:

  mkdir project-root #create the project root directory
  cd project-root #change to the project root directory
  wget https://github.com/Unix69/README-Template/archive/refs/heads/master.zip #make an http get request to get the project repository ** zip file ** 
  unzip master.zip #unzip the project master.zip file
  cp -R master/ ./ #copy all files recursively from the unziped master directory to your project root directory
  rm -rf master master.zip #remove the unziped master directory and master.zip file
  

B. You can clone the repository from GitHub if you have Git installed by running the following commands:

  mkdir project-root #create the project root directory
  cd project-root #change to the project root directory
  clone https://github.com/Unix69/C_Linux.git #clone the project repository 
  cp -R C_Linux/ ./ #copy all files recursively from the C_Linux directory to your project root directory
  rm -rf C_Linux #remove the C_Linux directory. 
  

⬇️ Download ZIP
🐙 View on GitHub



🛠️ Build

To build the project generate a custom or standard Doxyfile:

A. Custom Doxyfile - Doxygen Script: running the doxygen.sh script from the root directory;

    ./doxygen.sh  
  

or by running GNU Make with the build target:

    make build  
  

B. Standard Doxyfile - Command Line: Open a terminal into the root directory and generate the standard Doxyfile:

doxygen -g Doxyfile



⚙️ Configuration

To configure the project follow this setps:


  1. Open your root directory and put your code into ./src directory.
  2. Modify Doxygen's options by:

A. Doxygen: Changing/Adding manually a row in ./doxygen.ini before run it again, like:

<code>
  DOXY_PARAMETER = "DOXY_PARAMETER-VALUE"  
</code>

B. Doxyfile: Access the Doxyfile, generated by doxygen.sh script or run the

 doxygen -g Doxyfile
command, then change Doxygen's parameters manually.

  1. Modify the default Makefile and make toolchain to customize and integrate your building behaviour. The default Makefile of C_Linux is:

         # Makefile for building Doxygen documentation
    
         # Variables
         DOXYGEN_SH = ./doxygen.sh
         DOXYFILE   = Doxyfile
         DOCS_DIR   = docs
         OUTDIR     = docs/html
    
         # Default target
         all:
           @echo "Use 'make build' 'make doc' to build C_Linux and generate the documentation for your code!"
    
         # Build Documentation target
         build:
           @echo "==> Running Doxygen setup script..."
           @$(DOXYGEN_SH)
    
         # Make Documentation target
         doc:
           @echo "==> Running Doxygen with $(DOXYFILE)..."
           @doxygen $(DOXYFILE)
           @echo "==> Documentation successfully generated in $(DOCS_DIR)/"
           @echo "==> Copying image assets to the HTML output folder..." 
           @cp -R readme/Images $(OUTDIR) 2>/dev/null || true
           @echo "==> Copy completed."
    
         # Add new targets
    
         # Clean target
         clean:
           @echo "==> Removing documentation output directory..."
           @rm -rf $(DOCS_DIR)
           @echo "==> Clean completed."
    
    
       
  2. You can change the default Markdown .md files to customize your project markdown documentation. The default Markdown project of C_Linux is structured as follow:



✅ Tests

To test the project follow this setps:


  1. Run the test.sh script contained into the root directory:
     sudo ./test.sh 


🚀 Run

Once the Doxyfile is generated and configured as you wish, to make the documentation use:

A. Doxygen Open a terminal into the root directory and run the doxygen installed tool with your Doxyfile;

    doxygen Doxyfile  
  

B. GNU Make: Open a terminal into the root directory and run the gnu make installed tool with your Makefile and doxygen.sh:

    make doc  
  

✅ Now you can find the documentation into ./docs/ or at your Doxyfile OUTPUT_DIRECTORY path.



🌍 Deployment

Use GitHub to deploy the project.



❌ Uninstall

To uninstall the project just clean the documentation directory .e/docs/ and your Doxyfile or use the GNU Make tool and run the following command:

 make clean 



Releases ⭐

Table of Contents


🏷️ Version 🗓️ Release Date Status 📥 Downloads
v1.0.0 14/05/2025 Stable click here

Licenses 📜

Table of Contents


This project is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0) .

You are free to use, modify, and share this template — just give proper credit to Giuseppe Pedone.

© 2025 Giuseppe Pedone — GitHub: Unix69



Contributing 👋

Thank you for your interest in contributing to this project!
This guide explains how to collaborate, propose changes, report bugs, and maintain code quality.


Table of Contents

  1. Forking the Project
  2. Pull Requests
  3. Issues
  4. Code of Conduct

Everyone is welcome to contribute to this project. Before you start, please make sure that you:

  • Have read the CODE_OF_CONDUCT.md file
  • Have installed the required tools, languages, or frameworks
  • Understand the project structure and its main modules

When adding or modifying code:

  1. Fork the project
  2. Create your Feature Branch (git checkout -b feature/Feature)
  3. Commit your Changes (git commit -m 'Add some Feature')
  4. Push to the Branch (git push origin feature/Feature)
  5. Open a Pull Request
  • Keep your coding style consistent with the existing one
  • Write clear and descriptive commit messages
  • Update documentation when necessary
  • Run tests to ensure that everything works properly

General Contribution Rules

  • Avoid unnecessary changes to unrelated files
  • Clearly explain the purpose of any new feature you add
  • Reference the issue number when fixing a bug
  • Open an issue first if you plan to propose a major or structural change

1. Forking the Project

To propose code changes, always work on your personal copy (fork) of the repository.

How to Fork the Project

  1. Visit the main repository page on GitHub
  2. Select “Fork” to create your personal copy
  3. Work on your fork by creating a new branch dedicated to your change (for example: feature-new-functionality)
  4. When your work is ready, make sure it is synchronized with the main project version


2. Pull Requests

A pull request (PR) is used to propose the integration of your changes into the main repository.

How to Open a Pull Request

  1. Ensure your branch is up to date with the main project branch
  2. Verify that all tests and checks pass successfully
  3. Create a pull request including:
    • A clear and descriptive title (for example: “Fix: null pointer in login handler”)
    • A summary of what has been changed or added
    • Any related issue numbers (for example: “Fixes #12”)
  4. Wait for the maintainers to review your changes
  5. Apply any requested improvements and update your PR accordingly

Pull Request Guidelines

  • Use concise and meaningful titles
  • Include examples or references if helpful
  • Avoid committing unrelated or unnecessary files

3. Issues ⚠️

Issues are used to report bugs, suggest new features, or ask questions about the project.

If some Issues on C_Linux occur, the Actor can open an issue on GitHub by using the provided Issue template , or contact us directly to signal the issue manually.

How to Open an Issue

  1. Check whether the issue has already been reported
  2. If it’s new, open an issue in the project’s Issues section
  3. Clearly describe:
    • The type of issue (bug, feature request, question, etc.)
    • The steps to reproduce the problem
    • The expected vs. actual behaviour
    • Your environment details (OS, version, configuration, etc.)

Issue Tracker

All open and closed issues can be found in the repository’s Issues section.
If the project includes a dedicated file such as ISSUES.md, you can refer to it for an up-to-date overview of tracked issues.


4. Code of Conduct

All contributors must follow the rules described in CODE_OF_CONDUCT.md.
Any offensive, discriminatory, or non-constructive behaviour will be handled according to the policies defined in that document.

Thank you for helping improve this project! 🙌





FAQ ❓

Here you can find the Frequently Asked Questions and Answers.



Contact us ☎️

For more information on C_Linux contact us.



Official Links

Table of Contents

  • SemVer – A complete guide to Semanting Verioning.
  • DoxygenDocumentation generator for source code.
  • GitHubHosting and collaboration platform for Git repositories.
  • GitVersion control system to manage source code.
  • GNU MakeBuild automation tool to compile projects.


Authors 🧑‍💻

Here you can find all authors of C_Linux and their Contribution & Info 📝 :

👤 Author 🤝 Contributions 👥 Roles Email ☎️ Telephone

Unix69
FI, OP, DE FO and CEO giuseppe.pedone.developer@gmail.com +3711963527


💬 Contact them if you have any Questions.



Acknowledgements

Special thanks to:

  • Open source community
  • Contributors of similar templates
  • Libraries and frameworks that made this project possible


About

Contains examples on using C Linux system call (fork, wait, thread, kill, pause, pipe, condition variable, mutex, semaphores, ...)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published