{"id":23307059,"url":"https://github.com/whoismtrx/42_minitalk","last_synced_at":"2025-06-14T13:34:32.955Z","repository":{"id":229388070,"uuid":"491324789","full_name":"whoismtrx/42_minitalk","owner":"whoismtrx","description":"minitalk is a project at 42 that involves implementing a client-server model for communication. It focuses on sending and receiving messages between two processes using signals and bit manipulation.","archived":false,"fork":false,"pushed_at":"2024-04-05T22:22:05.000Z","size":222,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T00:30:02.970Z","etag":null,"topics":["1337","1337cursus","1337fil","1337school","42","42cursus","42projects","42school","c","clang","clanguage","minitalk","minitalk42","signals","unix"],"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/whoismtrx.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":"2022-05-12T01:30:53.000Z","updated_at":"2024-03-23T23:52:17.000Z","dependencies_parsed_at":"2024-03-24T01:37:26.571Z","dependency_job_id":"fd5df06e-5ed0-411f-a330-15e9dacbc4da","html_url":"https://github.com/whoismtrx/42_minitalk","commit_stats":null,"previous_names":["whoismtrx/42_minitalk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/whoismtrx/42_minitalk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoismtrx%2F42_minitalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoismtrx%2F42_minitalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoismtrx%2F42_minitalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoismtrx%2F42_minitalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whoismtrx","download_url":"https://codeload.github.com/whoismtrx/42_minitalk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whoismtrx%2F42_minitalk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259823883,"owners_count":22917147,"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":["1337","1337cursus","1337fil","1337school","42","42cursus","42projects","42school","c","clang","clanguage","minitalk","minitalk42","signals","unix"],"created_at":"2024-12-20T12:20:47.204Z","updated_at":"2025-06-14T13:34:32.907Z","avatar_url":"https://github.com/whoismtrx.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# minitalk\n\n![](https://github.com/whoismtrx/42_minitalk/blob/main/minitalk.gif)\n\n## Overview\n\nThis project is a small data exchange program using UNIX signals. You need to communicate two separate proccesses. One of them will be the server and the other one will be the client.\n\n## Key Features\n\nThe project is divided into two parts `Mandatory` and `Bonus`, every part has two programs, one for the `server` and the other one for the `client`.\n- `server`: The server runs first, displays its PID, and waits for the client to send a message.\n- `client`: The client takes the server's PID and a string as arguments, sends the string to the server.\n\nThe server displays the string. the string can contain Unicode characters in the bonus part.\n\n## Getting Started\n\nTo get started using minitalk, you need to clone the repository and run the following commands:\n\n```\ngit clone https://github.com/whoismtrx/42_minitalk.git minitalk\ncd minitalk\nmake\n```\n\n## Usage\n\nTo run the server, you should run the executable named `server` with no arguments:\n\n```\n./server\nPID : 12345\n```\n\nTo run the client, you need to provide the server's PID and a string as arguments:\n\n```\n./client 12345 \"Hello, World!\"\n```\n\n## Implementation\n\nThe server and the client communicate using UNIX signals `SIGUSR1` and `SIGUSR2`. The server waits for the client to send a signals, the client iterates over the string characters, looks for the bit representation of the characters, and sends a signal to the server for each bit, `SIGUSR1` or `SIGUSR2` for `1` or `0` it's depending on the bit value and what signal you choose to represent it. The server receives the signals and reconstructs the string.\n\n## Resources\n\n- [Introduction To Unix Signals Programming](https://www.cs.kent.edu/~ruttan/sysprog/lectures/signals.html)\n- [Why is Sigaction() a better option than Signal()](https://www.emblogic.com/blog/02/why-is-sigaction-a-better-option-than-signal/)\n- [Basics of Bit Manipulation](https://www.hackerearth.com/practice/basic-programming/bit-manipulation/basics-of-bit-manipulation/tutorial/)\n- [Characters, Symbols and the Unicode Miracle](https://www.youtube.com/watch?v=MijmeoH9LT4)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoismtrx%2F42_minitalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhoismtrx%2F42_minitalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhoismtrx%2F42_minitalk/lists"}