Verificar se o programa já está sendo executado

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Essa questão de garantir uma única instância do programa na mesma máquina ou mesmo limitar uma certa quantidade de usuários num sistema em rede até parece aquela discussão sobre proteção de programa. São coisas diferentes, claro. Mas têm soluções semelhantes, sob certo aspecto.

Não quero adiantar nada, mas estou pesquisando a respeito de um recurso chamado named pipes, que permite esse tipo de comunicação através do protocolo de rede. Se der certo da forma como estou imaginando, não haveria mais qualquer tipo de problema com isso. Bastaria um pequeno programa servidor rodando no servidor da rede, que faria o papel de "mediador" entre as máquinas clientes, possibilitando até mesmo chat entre elas.
O que pega é o maldito Win98, que só tem unnamed pipes, que tem uma mecânica diferente.
[]'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!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,

Cara, to ansioso pra conferir a função do Marcelo Clipper. Eu uso esse tréco do FOPEN() em todos os meus clientes com XP (e 98 e ME) e em nenhum caso nunca deu errado. Parece mentira, mas é 100% de acerto.

Então, antes de vc achar outra solução mais - digamos - técnica, deixa o Marcelo Clipper apresentar pra como ele usa o FOPEN(). Tem jeito?

(de qualquer forma, não lhe parece estranho a vc, Maligno, que o USE Exclusive funcione e o FOPEN() Exclusive não funcione? Ou são coisas diametralmente diferentes?)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eolo escreveu:Então, antes de vc achar outra solução mais - digamos - técnica, deixa o Marcelo Clipper apresentar pra como ele usa o FOPEN(). Tem jeito?
Calma! Eu não disse que vou fazer hoje. :))) Tenho que pesquisar muita coisa ainda. É algo meio complicado pra quem nunca mexeu com isso.
(de qualquer forma, não lhe parece estranho a vc, Maligno, que o USE Exclusive funcione e o FOPEN() Exclusive não funcione? Ou são coisas diametralmente diferentes?)
São diferentes, mas não diametralmente. Não tenho certeza disso, mas é bem provável que o Clipper, ao bloquear um DBF (apenas com a cláusula EXCLUSIVE), utilize a mesma API do DOS utilizada para a abertura em modo exclusivo pelo FOpen(). Logo, não deveria haver diferença alguma.
[]'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!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Marcelo Clipper, cadê vc, cara? Quero ver como vc usa o FOPEN() que funciona no 98/ME e não funciona no XP! To curioso!
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Tô aqui, é que como tenho muito o que fazer não dá pra ficar o tempo todo postando, mas quando dá eu posto sim, a pelo menos 5 anos diga se de passagem.

Resolvi verificar mais cudadosamente a rotina que tinha criado, testei no Windows 98 e funcionou beleza, testei no XP não funcionou, como o Eolo afirmou que com ele funcionava resolvi pesquisar e descobri que realmente havia um erro, porém eu fui induzido a ele pelo NG do Clipper 5.0, no NG do Clipper 5.0 só existem 3 opções de modo de acesso, são elas :

0 - SOMENTE LEITURA
1 - SOMENTE GRAVAÇÃO
2 - LEITURA E GRAVAÇÃO

Já no NG do Clipper 5.2 existem mais 6 modos além desses, que são os parâmetros 0,16,32,48,64,64

Então mudei meu parâmetro que era 0 para 16 e realmente funcionou perfeitamente no XP. O estranho e que ajudou no erro é que com o parâmetro O no Windows 95/98/ME funciona e no XP não funciona, com XP e sua maldita NTVDM é cheio de frescura achei que fosse problema de imcompatibilidade ou de viadagem mesmo.

De qualquer forma a dica serve para quem usa o Clipper 5.0 ou 5.01.

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)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Marcelo,

Cara, desculpe ter parecido meio grosseiro no meu post anterior. Não tive a intenção.

Quanto ao FOPEN(), eu uso 18, que é o modo de acesso 2 (leitura e gravação) mais o modo de compartilhamento 16 (exclusivo), com o Clipper52. Não sabia da restrição do Clipper50.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Que bom que foi esclarecido. Eu também tinha as minhas sérias dúvidas... primeiro pensei que fosse algum problema com os direitos do usuário na pasta que pudesse ser gravado em WIN XP.

Eu ainda mantenho a minha convicção que a idéia do Eolo de abrir através do FOPEN (RW) é melhor até agora, aliás eu tinha já elogiado anteriormente a idéia dele.

Não obtive resposta sobre a utilização do USE DBF e FOPEN FILE quanto a mémoria, mas acho também não precisamos provar nada sobre isso. E ainda a solução de abrir no próprio servidor em pasta diferentes (conforme o nome da estação), é uma boa saída para os casos de estações sem HD.
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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pablo César escreveu:E quanto à memória ocupada entre USE DBF e FOPEN FILE_NULO ?
Não entendi muito bem sua dúvida. Qual o problema com a memória?
[]'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!
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Ele quer saber em qual dos casos há mais consumo de memória, eu acho que não faz diferença alguma, creio que o consumo deve ser o mesmo.

Até logo.

Marcelo
Editado pela última vez por Clipper em 30 Jun 2007 00:27, em um total de 1 vez.
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)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ah, se for isso, concordo com você. Se fizer diferença deve ser pequena aponto de ser desprezível. Aliás, se a gente for se preocupar com coisas desse tipo, aquilo de mais importante acaba sempre ficando pra trás. Vê-se muito disso em OOP. Mas aí é um pouco diferente. Há situações em que essa preocupação se justifica. Mas nem sempre.
[]'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!
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Verificar se o programa já está sendo executado

Mensagem por Daiane »

Opa,estava querendo saber como eu poderia fazer isso,verificar se o executável ja esta sendo utilizado no terminal,e com ajuda de vocês consegui resolver,assim que o usuario estiver usando o programa e tentar abri-lo novamente o sistema não vai permitir.
Eu estava tendo problemas com duplicidade de código,pois o usuário abria dois ou mais executáveis,espero isso resolva.
Utilizei a forma do FOPEN e utilizo o windows 7 e funcionou bem. ainda não testei no XP,espero que funcione corretamente também,muitos de nossos clientes ainda usam XP.

Ótimo tópico de informações :)
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Verificar se o programa já está sendo executado

Mensagem por Kapiaba »

Bom dia Daiane, se a sua pergunta se referir a FiveWin for xHarbour, faça a pergunta no forum de FiveWin que eu respondo. Agora se Clipper modo console, ignore minha postagem. Obg. abs.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Verificar se o programa já está sendo executado

Mensagem por Eolo »

Utilizei a forma do FOPEN e utilizo o windows 7 e funcionou bem. ainda não testei no XP,espero que funcione corretamente também,muitos de nossos clientes ainda usam XP.
Eu usei (uso) isso, sem problemas, com o Clipper 52e rodando sob Win98, ME, XP e Win7.

Aliás, acabei de testar no Win10 32. Funciona normal.

Em tempo: uso em modo console, mas não acredito que faça alguma diferença se houver ou não alguma interface gráfica. Afinal, é simplesmente abrir um arquivo qualquer em modo exclusivo... Aliás, o Nascimento usa o Harbour com uma LIB gráfica e passou a usar essa solução do FOPEN. Funciona perfeito.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Verificar se o programa já está sendo executado

Mensagem por Nascimento »

Sim sim tanto no xp e no windows7 funcionando sem problemas
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder