Como usar a função Leto_ProcessRun()?

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2831
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

Como usar a função Leto_ProcessRun()?

Mensagem por Jairo Maia »

Olá Pessoal,

Alguém usa ou sabe usar a função Leto_ProcessRun()? Não consigo rodar nada com ela...

Código: Selecionar todos

Leto_ProcessRun (<cCmd>, NIL, [<@cStdOut>], [<@cStdErr>]) ==> nError
Extraído do Manual do Leto_DBF (Traduzido):

* TENHA CUIDADO COM O COMANDO <cCmd> *, pois um processo não finalizado bloqueará a conexão infinito e será necessário reiniciar o servidor.

Muito semelhante em uso à função Harbour: hb_ProcessRun (), onde o uso de stdin é não implementado, e o comando <cCmd> é executado com o diretório de trabalho definido em "DataPath", o que significa que os arquivos no servidor podem ser referenciados usando um caminho relativo.

<cCmd> normalmente contém um prefixo não obrigatório, dependendo do sistema operacional no servidor:
# para Windows: cmd / C "comando para executar"
# para Linux: / bin / bash -c "comando para executar" e encapsular a string de comando acima entre aspas simples <'>.

O <nError> retornado é o ErrorLevel que um comando executado retorna ao sistema operacional, onde '0' normalmente significa que nenhum erro ocorreu. Duas variáveis opcionais <@cStdOut> e <@cStdErr> fornecidas pela referência [@] conterão a saída da string do comando executado para o dispositivo stdout e stderr.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2831
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

Re: Como usar a função Leto_ProcessRun()?

Mensagem por Jairo Maia »

Olá Pessoal,

Eu tinha muita "curiosidade" para saber como funciona a função Leto_ProcessRun(), apenas curiosidade mesmo, a rigor nem sabia se poderia ser útil, mas não conseguia entender como usar.

Na verdade, essa função executa algo no Servidor, e EM SEGUNDO PLANO. Na máquina cliente, não se vê nada, a menos que a função executada gere algo, e depois faça a leitura do resultado.

Por exemplo, para abrir uma nova instância do ACBrMonitorPlus no Servidor:
Leto_ProcessRun( "cmd /C Start C:\ACBrMonitorPlus\ACBrMonitor.exe", Nil, Nil, Nil )
Esse comando abre uma nova instância do ACBr no servidor, e rodando em segundo plano. Ninguém vê, nem no servidor nem na máquina cliente que executou o comando. Ao fazer esse teste, no servidor abra o gerenciador de Tarefas, e veja o comando (ou programa) aberto em segundo plano, e para fechar... bem, ou feche pelo servidor no gerenciador de tarefas ou ele fica aberto inutilmente...

Porém, o comando foi executado. Isso serve prá tudo, abrir editor de texto ou qualquer outro programa, ou até mesmo rodar um comando como dir *.*, etc...

O grande problema, é que no exemplo que dei para abrir o ACBr, enquanto o ACBr estiver aberto, o Leto_Service fica travado, para isso não acontecer ao usar o CMD, sempre use o comando Start, isso faz com que o CMD execute o comando e não fique esperando o resultado, e então não trava o Leto_service. Apenas isso.

Prá que serve essa função? Não tenho nenhuma idéia.... mas deve ter alguma utilidade... :D
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder