Verificar se o programa já está sendo executado
Moderador: Moderadores
Verificar se o programa já está sendo executado
Caros amigos, Boa noite.
Gostaria de saber se existe algum comando ou função para eu saber, dentro do próprio programa, se ele já está sendo executado na rede.
Abraços,
Gostaria de saber se existe algum comando ou função para eu saber, dentro do próprio programa, se ele já está sendo executado na rede.
Abraços,
Não existe comando ou função nativa pra isso. Mas, sem pensar muito profundamente no problema, acho que você poderia criar um semáforo em arquivo. Deve resolver. Muito embora eu saiba que podem ocorrer certas "complicações" nessa solução.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Uma solução simples: no início do seu programa, abra um arquivo qualquer no servidor, com o FOPEN(), em modo exclusivo, e deixe ele aberto direto. Se o programa estiver rodando e vc tentar abrir em outra janela (ou outra estação), o FOPEN() vai retornar erro, aí vc sabe que ou a rede tá fora do ar ou o programa já está aberto em outra janela...
E isso serve pra Clipper ou xHarbour.
E isso serve pra Clipper ou xHarbour.
Tenho a ligeira impressão de que o colega quer apenas saber SE o mesmo programa está aberto em algum outro ponto da rede. Talvez até para atualização do sistema. Muito útil, aliás.
Mas se ele deixar esse "arquivo semáforo" sempre aberto, como você sugere, ele acabará bloqueando a execução do programa. Acho que não é essa a intenção.
Mas se ele deixar esse "arquivo semáforo" sempre aberto, como você sugere, ele acabará bloqueando a execução do programa. Acho que não é essa a intenção.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno,
O "deixar o arquivo semáforo sempre aberto" é só durante a execução do EXE! Saiu dele, o semáforo é obviamente liberado (não precisa nem fechar o arquivo, o Clipper faz isso). Então, o semáforo só vai bloquear uma 2a. instância do mesmo EXE. No caso de "atualização do sistema", basta o Administrador bloquear o semáforo: o usuário não vai conseguir entrar e aí o Adm atualiza o que for necessário.
Eu não vi nenhum caso em que essa idéia do FOPEN() não funcione. Se vc tiver algum exemplo, manda aí!
O "deixar o arquivo semáforo sempre aberto" é só durante a execução do EXE! Saiu dele, o semáforo é obviamente liberado (não precisa nem fechar o arquivo, o Clipper faz isso). Então, o semáforo só vai bloquear uma 2a. instância do mesmo EXE. No caso de "atualização do sistema", basta o Administrador bloquear o semáforo: o usuário não vai conseguir entrar e aí o Adm atualiza o que for necessário.
Eu não vi nenhum caso em que essa idéia do FOPEN() não funcione. Se vc tiver algum exemplo, manda aí!
Desculpe, Eolo. Da forma como você colocou, a impressão que me deu é que você sugeria o bloqueio da execução do programa, a fim realmente de evitar que, a qualquer tempo, alguém o executasse.
Mas como bloqueio temporário, a fim de atualizar o sistema, sim, eu concordo com o uso de um semáforo por arquivo.
Esse sistema funciona. Você próprio afirma isso. Então, pra quê você quer mais exemplos? Não entendi.
Mas como bloqueio temporário, a fim de atualizar o sistema, sim, eu concordo com o uso de um semáforo por arquivo.
Esse sistema funciona. Você próprio afirma isso. Então, pra quê você quer mais exemplos? Não entendi.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Não. Restrição nenhuma. Esse tipo de semáforo tem sua utilidade. Só reitero que existem sim, algumas "complicações" quando se utiliza este recurso para monitorar constantemente quem está usando o que e onde. Mas para o caso do colega, se for para atualização de sistema, é tranqüilo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Seguinte : Não querendo atrapalhar mas já atrapalhando, a opção do Eolo funciona muito bem no Windows 98/95/ME, no XP não funciona (no 2000 não testei), pois mesmo que se abra o arquivo no modo somente leitura ele retorna que o arquivo está liberado, só acontece isso no XP, eu sei porque tenho uma função que verifica se o programa já está em execução e no XP ela não funcionava, mudei a função usando DBF e USE EXCLUSIVE normalmente e funciona agora em qualquer SO.
Ps. O Julio (Junaly) me ligou e disse que teve esse problema, estava funcionando no 98/95 mas não no XP, então expliquei a ele o motivo.
Até logo.
Marcelo
Ps. O Julio (Junaly) me ligou e disse que teve esse problema, estava funcionando no 98/95 mas não no XP, então expliquei a ele o motivo.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Acho que qualquer comentário que adicione experiência, é válido, você não estaria atrapalhando, não é Eolo ?.
Ja me há acontecido situações em que o usuário desligue, ou até mesmo haja uma queda de energia o arquivo ainda ficara aberto e o jeito era desligar o servidor. Isto tudo em certaz ocasiões, difícil diagnosticar mas eu me ví já nessa situação.
Será que isso só aconteceu comigo somente ?
Estranho essa tua afirmação, pois quando eu fiz testes tambem em Xp e me parece que funcionou bem. Irei fazer novamente o teste em XPClipper escreveu:a opção do Eolo funciona muito bem no Windows 98/95/ME, no XP não funciona (no 2000 não testei), pois mesmo que se abra o arquivo no modo somente leitura ele retorna que o arquivo está liberado, só acontece isso no XP
Mas esta sua idéia não me parece errada não. assim como o Maligno, eu também tenho as minhas ressalvas. Eu há uns anos atrás, tinha aberto uma sessão sobre chamar aplicativos em multi-sessão. E eu agoar não consigo lembrar quais seriam os motivos que impediam que o sistema rodasse 100% sem abrir em multi-sessão.Clipper escreveu:mudei a função usando DBF e USE EXCLUSIVE normalmente e funciona agora em qualquer SO.
Ja me há acontecido situações em que o usuário desligue, ou até mesmo haja uma queda de energia o arquivo ainda ficara aberto e o jeito era desligar o servidor. Isto tudo em certaz ocasiões, difícil diagnosticar mas eu me ví já nessa situação.
Será que isso só aconteceu comigo somente ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Clipper,...pois mesmo que se abra o arquivo no modo somente leitura ele retorna que o arquivo está liberado, só acontece isso no XP, eu sei porque tenho uma função que verifica se o programa já está em execução e no XP ela não funcionava...
Estranha a sua afirmação, pq eu uso isso na minha rede e em todos os meus clientes, e funciona normal em todos, com o XP ou não.
POSTa a sua função onde vc usa o FOPEN() em modo exclusivo (que NÃO funciona) pra gente dar uma olhada? Cara, DBF Exclusive funciona e o FOPEN() Exclusive não funciona? Voodoo!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahh lembrei de algo para o caso do USE DBF EXCLUSIVE der errado... Claro quevâo me dizer... mas isso é erro de programação... mas se o programador fechar (sem querer com CLOSE ALL) por exemplo ? E quanto à memória ocupada entre USE DBF e FOPEN FILE_NULO ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.



