{"id":18337764,"url":"https://github.com/pin3dev/42_minitalk","last_synced_at":"2025-04-09T20:18:37.895Z","repository":{"id":259549601,"uuid":"839924809","full_name":"pin3dev/42_Minitalk","owner":"pin3dev","description":"inter-process communication, using UNIX signals to transmit messages from a client to a server. Explores asynchronous communication using SIGUSR1 and SIGUSR2 signals.","archived":false,"fork":false,"pushed_at":"2024-10-24T23:48:22.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:18:34.234Z","etag":null,"topics":["42-cursus","42-minitalk","42-school","42sp","binary","binary-data","bitwise","bitwise-operators","minitalk","minitalk42","pid","process","process-identifier","signal-processing","signals","sigusr1","sigusr2","unix-signal-handling","unix-signals"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pin3dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-08T15:47:02.000Z","updated_at":"2024-10-24T23:48:25.000Z","dependencies_parsed_at":"2024-10-26T12:33:21.168Z","dependency_job_id":"b05a9fa8-b2cf-4282-9006-077f88f1da3e","html_url":"https://github.com/pin3dev/42_Minitalk","commit_stats":null,"previous_names":["pin3dev/42_minitalk"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Minitalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Minitalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Minitalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_Minitalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pin3dev","download_url":"https://codeload.github.com/pin3dev/42_Minitalk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103909,"owners_count":21048246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["42-cursus","42-minitalk","42-school","42sp","binary","binary-data","bitwise","bitwise-operators","minitalk","minitalk42","pid","process","process-identifier","signal-processing","signals","sigusr1","sigusr2","unix-signal-handling","unix-signals"],"created_at":"2024-11-05T20:12:12.614Z","updated_at":"2025-04-09T20:18:37.876Z","avatar_url":"https://github.com/pin3dev.png","language":"C","readme":"\u003ch1 align=\"center\"\u003eMinitalk\u003c/h1\u003e\n\u003cp align=\"center\"\u003e \n  \u003cimg src=\"https://img.shields.io/badge/grade-115%2F125-green?style=for-the-badge\u0026logo=42\u0026labelColor=gray\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Cursus/tree/main/library/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Signals-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Processes-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Error_Handling-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Bitwise_operation-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Binary_shift-blue?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3\u003e\n  \u003cp align=\"center\"\u003e \n    \u003ca href=\"#introduction\"\u003eIntroduction\u003c/a\u003e • \n    \u003ca href=\"#structure\"\u003eStructure\u003c/a\u003e • \n    \u003ca href=\"#docs\"\u003eDocs\u003c/a\u003e • \n    \u003ca href=\"#cloning\"\u003eCloning\u003c/a\u003e • \n    \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e • \n    \u003ca href=\"#norms\"\u003eNorms\u003c/a\u003e • \n    \u003ca href=\"#theoretical\"\u003eTheoretical\u003c/a\u003e   \n  \u003c/p\u003e\n\u003c/h3\u003e\n\n## 🗣️ Introduction \u003ca id=\"introduction\"\u003e\u003c/a\u003e\n\n**Minitalk** is a project where the goal is to implement a simple data exchange program using UNIX signals (`SIGUSR1` and `SIGUSR2`). The program consists of a server and a client, where the client sends a message to the server, and the server decodes and prints it.\n\nThe objective of this project is to deepen the understanding of inter-process communication (IPC) using signals, while also ensuring that the communication is efficient and error-free.\n\n## 🧬 Project Structure \u003ca id=\"structure\"\u003e\u003c/a\u003e\n\nThis project consists of two main parts: the **client** and the **server**.\n\n- **Server**: The server is responsible for receiving messages from the client. It decodes the signals sent by the client and displays the message in real-time. The server can handle multiple clients sequentially.\n  \n- **Client**: The client takes two parameters, the `server's PID` and the `message` to be sent. It encodes the message as a series of signals and sends them to the server.\n\nCommunication between the client and the server is done using only two UNIX signals: `SIGUSR1` and `SIGUSR2`.\n\n## 🗃️ Documentation \u003ca id=\"docs\"\u003e\u003c/a\u003e\n\nFor a detailed breakdown of how the project works, please visit the documentation link below:\n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Minitalk/wiki\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Minitalk_Docs-lightgreen?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 🫥 Cloning the Repository \u003ca id=\"cloning\"\u003e\u003c/a\u003e\n\nTo clone this repository and compile the project, run the following commands:\n\n```bash\ngit clone https://github.com/pin3dev/42_Minitalk.git\ncd 42_Minitalk/minitalk\n```\nThis will download the project to your local machine. Once inside the `minitalk` directory, run the provided `Makefile` to compile the project.\n\n## 🕹️ Compilation and Usage \u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n### Makefile\n\nThe project comes with a `Makefile` to automate the compilation process. The Makefile includes the following rules:\n\n- `all`: Compiles the server and client programs.\n- `clean`: Removes object files.\n- `fclean`: Removes object files and the executables.\n- `re`: Recompiles the entire project.\n\nTo compile the project, run:\n```bash\nmake\n```\nThis will generate the executables `server` and `client`.\n\n### Basic Usage\n\n1. Start the server:\n   ```bash\n   ./server\n   ```\n   The server will display its `PID`. This is required for the client to communicate with the server.\n\n2. Send a message from the client:\n   ```bash\n   ./client \u003cserver-pid\u003e \"Your message here\"\n   ```\n   The client will send the message to the server, which will then print it.\n\n3. The server can handle multiple clients without needing to restart.\n\n## ⚠️ Norms and Guidelines Disclaimer \u003ca id=\"norms\"\u003e\u003c/a\u003e\n\nThis project follows the [**42 School Norm**](https://github.com/pin3dev/42_Cursus/blob/b9cd0fe844ddb441d0b3efb98abcee92aee49535/assets/General/norme.en.pdf) guidelines. Certain decisions in the implementation may seem unconventional, but they were necessary to comply with the strict coding standards enforced by the school.\n\n## 📖 Theoretical Background \u003ca id=\"theoretical\"\u003e\u003c/a\u003e\n\nAll the theoretical material used to study and carry out this project is organized in the tags described at the beginning of this README.\nIn addition, these materials can be accessed directly via the link provided below.  \n\n\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://github.com/pin3dev/42_Cursus/tree/main/library/#02-Minitalk\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Minitalk_Theory-gray?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_minitalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpin3dev%2F42_minitalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_minitalk/lists"}