{"id":18644706,"url":"https://github.com/d1ogocs/despertador","last_synced_at":"2025-07-04T15:34:53.670Z","repository":{"id":250187678,"uuid":"829461744","full_name":"D1ogoCS/Despertador","owner":"D1ogoCS","description":"Desenvolvimento de um sistema de gestão de processos na linguagem de programação C","archived":false,"fork":false,"pushed_at":"2024-07-25T15:39:41.000Z","size":179,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-27T11:29:34.517Z","etag":null,"topics":["alarm-clock","c","threading","ubuntu"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/D1ogoCS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-07-16T13:25:42.000Z","updated_at":"2024-07-25T15:40:22.000Z","dependencies_parsed_at":"2024-07-25T19:53:51.291Z","dependency_job_id":null,"html_url":"https://github.com/D1ogoCS/Despertador","commit_stats":null,"previous_names":["d1ogocs/despertador"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D1ogoCS%2FDespertador","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D1ogoCS%2FDespertador/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D1ogoCS%2FDespertador/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/D1ogoCS%2FDespertador/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/D1ogoCS","download_url":"https://codeload.github.com/D1ogoCS/Despertador/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239449544,"owners_count":19640532,"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":["alarm-clock","c","threading","ubuntu"],"created_at":"2024-11-07T06:13:19.713Z","updated_at":"2025-02-18T09:43:19.758Z","avatar_url":"https://github.com/D1ogoCS.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Despertador\n## Desenvolvimento de um sistema de gestão de processos na linguagem de programação C\n\nNeste trabalho prático, o objetivo é desenvolver um sistema de gestão de processos utilizando a linguagem de programação C. O sistema deverá ser capaz de criar processos filhos a partir de um processo pai, permitindo a execução simultânea de múltiplos processos independentes. Além disso, o trabalho deve conter a implementação de conceitos fundamentais de sistemas operativos, como criação de processos, comunicação entre processos e sincronização.\n\n### Objetivos:\n- Implementar um programa concorrente em linguagem de programação C para simular um despertador\n- O programa deve permitir que o utilizador defina um horário de despertar e, quando esse horário for alcançado, deve exibir uma mensagem indicando que é hora de acordar.\n- Enquanto o programa estiver a aguardar o horário de despertar, deve ser capaz de executar outras tarefas concorrentemente, como por exemplo: alterar a hora de despertar, desligar ou suspender o alarme.\n\n### Funcionalidades:\n- O utilizador pode definir o horário de despertar através da entrada de dados\n- O programa exibe a hora atual enquanto espera pelo horário de despertar\n- Quando o horário de despertar é alcançado, o programa exibe a mensagem \"Hora de acordar!\"\n- O programa é capaz de executar outras tarefas concorrentemente enquanto aguarda o horário de despertar como por exemplo: alterar a hora de despertar, desligar ou suspender o alarme\n\n### Ferramentas utilizadas:\n- Ubuntu: Sistema operativo baseado em Linux\n- Nautilus: Gestor de ficheiros padrão do Ubuntu\n\n### Tecnologias utilizadas:\n- Linguagem C\n\n### Descrição:\n\nO programa possui três funções fundamentais que são:\n- mostrarHoraAtual(): Possui um ciclo infinito para executar a função __menu()__ de minuto a minuto, mas a função __menu()__ só é executada se o utilizador não estiver a definir um horário de despertar\n- alarme(): Possui um ciclo infinito. Foi criada uma variável do tipo *localtime*, que permite verificar se a hora atual é igual à hora que o utilizador definiu para despertar. Assim que a hora atual for igual à hora de despertar, é impresso no terminal a mensagem “Hora de acordar! Clique 9 para parar.” e se estiver a usar o código no Ubunto é também emitido um som de alerta, mas isto só acontece se o utilizador tiver as notificações sonoras ativas. Para o utilizador parar a mensagem de despertar basta digitar “9” no terminal o que fará mudar o valor da variável __dslMsg__ e por consequência interromper o alarme\n- menu(): Sempre que é executada, imprime no ecrã a hora atual do sistema, assim como o menu com as funções do despertador\n\n### Resultados:\nO Ubuntu foi instalado no computador atraves do WSL(Subsistema do Windows para Linux). O WSL é um recurso do Windows que permite executar um ambiente Linux no computador com sistema operativo Windows, sem a necessidade de utilizar uma máquina virtual.\n\n![Nautilus](https://github.com/D1ogoCS/Despertador/blob/main/imagens/ubuntu.png)\n\n*Nautilus*\n\n![Código no processador de texto do Ubuntu](https://github.com/D1ogoCS/Despertador/blob/main/imagens/ubuntu2.png)\n\n*Código no processador de texto do Ubuntu*\n\n![Menu](https://github.com/D1ogoCS/Despertador/blob/main/imagens/menu.png)\n\n*Menu*\n\nSe o utilizador escolher a opção “1-Definir Despertador”, consegue definir um horário de despertar para definir as horas com um valor no intervalo de 0 a 23 e os minutos com um valor no intervalo de 0 a 59. Sempre que o valor de uma destas variáveis sair do intervalo permitido, é indicado ao utilizador para o introduzir novamente o horário de despertar. Após o horário definido, a *thread* do despertador é criada e o horário escolhido para despertar é impresso no terminal e a variável __notificacaoSonora__ é também ativa.\n\n![Definir despertador](https://github.com/D1ogoCS/Despertador/blob/main/imagens/opcao1.png)\n\n*Definir despertador*\n\nSe o utilizador escolher a opção “2-Desligar despertador”, a *thread* do despertador é terminada e é impresso no terminal uma mensagem a dizer que o alarme foi desligado.\n\n![Desligar despertador](https://github.com/D1ogoCS/Despertador/blob/main/imagens/opcao2.png)\n\n*Desligar despertador*\n\nSe o utilizador escolher a opção “3-Silenciar Alarme” ou a opção “4-Ativar Alarme” permite escolher se as notificações estão ativas ou não e imprime no terminal a respetiva escolha.\n\n![Silenciar alarme](https://github.com/D1ogoCS/Despertador/blob/main/imagens/opcao3.png)\n\n*Silenciar alarme*\n\n![Ativar alarme](https://github.com/D1ogoCS/Despertador/blob/main/imagens/opcao4.png)\n \n*Ativar alarme*\n\nSe o utilizador escolher a opção “5-Ver Despertador”, é impresso no terminal o horário de despertar definido que o utilizador escolheu.\n\n![Ver despertador](https://github.com/D1ogoCS/Despertador/blob/main/imagens/opcao5.png)\n \n*Ver despertador*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd1ogocs%2Fdespertador","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd1ogocs%2Fdespertador","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd1ogocs%2Fdespertador/lists"}