{"id":16970600,"url":"https://github.com/darthgera123/shell","last_synced_at":"2026-05-02T23:33:35.280Z","repository":{"id":118485821,"uuid":"150620126","full_name":"darthgera123/Shell","owner":"darthgera123","description":"A shell made in C using different syscalls","archived":false,"fork":false,"pushed_at":"2018-09-27T16:57:46.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-26T14:21:58.201Z","etag":null,"topics":["c","operating-system","syscalls"],"latest_commit_sha":null,"homepage":null,"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/darthgera123.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":"2018-09-27T16:57:19.000Z","updated_at":"2018-09-27T22:47:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"88ed54b1-7f28-478e-b559-ff0cbf2e4e3d","html_url":"https://github.com/darthgera123/Shell","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darthgera123%2FShell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darthgera123%2FShell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darthgera123%2FShell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darthgera123%2FShell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darthgera123","download_url":"https://codeload.github.com/darthgera123/Shell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244856166,"owners_count":20521772,"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":["c","operating-system","syscalls"],"created_at":"2024-10-14T00:28:46.328Z","updated_at":"2025-10-19T18:47:57.042Z","avatar_url":"https://github.com/darthgera123.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shell \n \nThe shell has the following capabilities\n\n+ Inbuilt cd,echo,ls,pwd,fg,bg,jobs,setenv,unsetenv\n+ Can run process at foreground and background\n+ Can give information about process info\n+ When bg process is done, message is displayed\n+ you can check the dynamic time as well using clock command\n+ It gives info on all running background process\n+ Commands can be piped and redirected\n+ Shell exits only on quit \n+ Process is terminated on ctrl-c\n+ Process is suspended on ctrl-z\n+ Stopped background process run on bg\n+ Overkill kills all background process\n\n\n## Setup\n\nTo run the shell, you need to do the following-\n\n+ Run `make`\n+ Run `./shell`\n\n## File Map \n \n### `src/`\n- `shell.c` has the startup code\n- `mainloop.c` has all main functions such as input commands, bg checker working\n- `run.c` has ctrl-z handler, execute function which is for `quit` and the process handler\n- `pipeShell.c` has pipe and redirection handling\n- `exitHandler.c` has ctrl-c handler\n- `prompt.c` has the function for generating prompt\n- `commands.c` has the function for splitting of commands\n- `newPointer.c` initializes a new char pointer\n- `bgKiller.c` function for terminating background process\n- `cd.c` has cd implemented\n- `clock.c` has clock implemented\n- `echo.c` has echo implemented\n- `fgShell.c` has fg and bg implemented\n- `killJobShell.c` has jobs and kjob implemented\n- `ls.c` has ls implemented\n- `overkill.c` has overkill implemented\n- `pinfo.c` has pinfo implemented\n- `setenvShell.c` has setenv,getenv and unsetenv implemented\n\n### `include/`\n\n- `shellFunctions.c` has all the functions and global constants declared\n\n### `obj/`\nHas all the binaries of all `src` files.\n\n## Road Map\n\nWhen you run `./shell`, it starts up from `shell.c` and initializes all global variables like killy,bgy etc. Then it goes into `mainloop.c` where in background process life is checked and command input is handled. This is further sent to `pipeShell.c` where in the input and ouptut file descriptors are set for each command in pipe. Recursively they are executed by the functions in `run.c` namely by `launch` function. This function basically creates the processes and does the signal handling as well.   ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarthgera123%2Fshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarthgera123%2Fshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarthgera123%2Fshell/lists"}