Olá,
Bem, eu preciso verificar se o Firebird está rodando no Windows. Estou usando a linguagem C e a API do Windows.
Eu até achei o seu pid, que no momento é 2736. Ótimo, eu posso verificar através da função EnumProcesses(). Só que esse pid ele muda, ou seja, não é um valor fixo. Existe alguma forma de verificar se um processo está rodando através do nome do executável, como por exemplo, se o fbserver.exe estiver rodando, então o Firebird está ativo. É claro que isso não é tão seguro, mas é algo temporário. Usando pid eu fiz da seguinte forma:
#include <stdio.h>
#include <windows.h>
#include <psapi.h>
int main(){
int i, Rodando;
Rodando = 0;
DWORD processos[1024];
DWORD pBytesReturned;
EnumProcesses(processos, sizeof(processos), &pBytesReturned);
int retornados = pBytesReturned / sizeof(DWORD);
for(i=0; i < retornados; i++){
if(!processos[i] == 0){
if (processos[i] = 2736)
Rodando = 1;
else
Rodando = 0;
}
}
if (Rodando = 1)
printf("O Firebird esta rodando!\n");
else
printf("O Firebird nao esta rodando!\n");
return 0;
}
Alguém pode me dar alguma dica? Obrigado.