4
respostas

SERVIÇO NO LINUX

Em meu trabalho, tem um executável programado na linguagem C que hoje roda apenas como serviço no Windows,com quatro funcionalidades: 1)instalar serviço; 2) iniciar serviço; 3) remover serviço; 4) rodar no console para depuração. Minha missão é fazer com que ele rode também em Linux. Por favor, teriam algum "caminho das pedras"? Desde já agradeço.

4 respostas

Bom dia. Se entendi sua pergunta Você primeiro vai ter que compliar o arquivo meuCodigo.c.

Compilando o código fonte: Para compilar um código em C, usaremos o compilador gcc. O compilador é responsável por traduzir o código fonte escrito em uma linguagem específica para um arquivo que o computador saiba interpretar, ou seja, um executável. No terminal, digitaremos: gcc ­o saida meuCodigo.c O parâmetro “ ­o saida” indica o nome do executável que será criado. O parâmetro “meuCodigo.c” indica qual será o código fonte compilado.

Segunda etapa. Corntab vai te ajudar a fazer o agendamento da tarefa. O Crontab nos permite agendar as tarefas para que elas sejam executadas automaticamente. O usuário pode, por exemplo, configurar o sistema para que um lembrete seja impresso na tela com a frequência de dias e horários que ele quiser. O mesmo pode ser feito para agendar scripts e comandos do Linux.

OBS> De uma pesquisada no crontab para fazer da forma que for mais indicada para você.

Att., Fernando

Fernando, bom dia e muito obrigado pelas informações. O projeto original usa libcurl, openssl e comunicação com WEB (hoje só em Windows), utilizando o Visual Studio Community. Criei pastas específicas de forma organizada: arquivos .c na pasta source, .h na header, e utilizando o Makefile estou compilando gcc no Ubuntu e ajustando os erros de compilação utilizando a técnica da compilação condicional : #ifdef __unix {...específico para Linux} #endif __unix #ifdef __WIN32s.o. {...específico para Linux} #endif __WIN32 e desta forma, estou resolvendo as diferenças entre os dois sistemas operacionais. Mas, quanto ao tema dos serviços: instalação, cadastro, remoção, iniciar e parar o serviço no Windows utiliza o recurso de WINAPI. Nesta parte estou tendo dificuldade em efetuar a diferenciação e, para tanto, vou pesquisar no crontab conforme sua orientação. Desde já agradeço.

Retificando: #ifdef unix {...específico para Linux} #endif unix ** #ifdef WIN32 {...específico para Windows} ** #endif WIN32

Fernando, acabei de consultar https://pt.wikipedia.org/wiki/Crontab, Pelo que li, O crontab é um programa do Unix que edita o arquivo onde são especificados os comandos a serem executados e a hora e dia de execução pelo cron, um serviço que executa comandos agendados nos sistemas operacionais do tipo Unix (como o Linux ou o MINIX, por exemplo). O cron se encarregará de verificar a hora e determinar se existe ou não algum programa a ser rodado. Caso exista ele o rodará na hora e data solicitada.[1] Para a tarefa que me deram no trabalho, eu preciso programar na linguagem C (como é hoje no Windows). Para tanto, eu preciso portar um aplicativo que usa chamadas Win32 (WINAPI). Uma vez que, o programa deve rodar nos dois sistemas operacionais, o que me falta agora, e é o que dará mais trabalho é programar algo equivalente direto real ao Win32 no Linux.