1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Urgente Executar Library

Discussão em 'Progress 4GL' iniciado por lwazevedo, Novembro 13, 2014.

  1. lwazevedo

    lwazevedo Membro Ativo

    Olá amigos, venho aqui mais uma vez solicitar a ajuda de vocês.

    Estou tendo dificuldades em executar uma library no unix para dois usuários ao mesmo tempo. vou tentar exemplificar.

    Tenho no meu servidor o seguinte diretório. /u/usuarios/ , dentro deste diretório cada usuário tem uma pasta com seu nome, dentro desta pasta foi colocada a mesma libary para todos. exemplo:

    /u/usuarios/fulano/library.so
    /u/usuarios/ciclano/library.so

    quando invoco está lib para usuario fulano, tudo ocorre muito bem, mas quando logo com os dois usuario ao mesmo tempo e tento executar o processo trava tudo e não finaliza o processo.

    outra coisa que notei é que, quando estou com duas sessões do Putty aberto para usuarios diferente, eu tenho que fechar uma para poder executar o processo, ou seja só funciona para um usuario de vez, e eu preciso que execute para todos ao mesmo tempo.

    se alguém conseguir me ajudar agraço muito, segue o código que estou usando.
    Código:
    FUNCTION os-eDefinirProduto RETURN INTEGER (INPUT vch-produto AS CHAR):
          
        IF NOT VALID-HANDLE (vha-Call) THEN   
            CREATE CALL vha-Call.
    
        ASSIGN
            vha-Call:PERSISTENT                 = TRUE  
            vha-Call:LIBRARY-CALLING-CONVENTION = "STDCALL"
            vha-Call:CALL-NAME                  = "eDefinirProduto"
            vha-Call:LIBRARY                    = /u/usuarios/nomeUsuario/library.so
            vha-Call:CALL-TYPE                  = DLL-CALL-TYPE
            vha-Call:NUM-PARAMETERS             = 1
            vha-Call:RETURN-VALUE-DLL-TYPE      = "short".
           vha-Call:SET-PARAMETER (1,"character","input", vch-produto).
      
          vha-Call:INVOKE().
          vin-retorno = vha-Call:RETURN-VALUE.
          vha-Call:CLEAR().
         DELETE OBJECT vha-Call.
         RETURN vin-retorno.
    END FUNCTION. 
  2. joelscampos

    joelscampos Membro Participativo

    Entendo pouco disso, mas e se você retirasse a linha "
    IF NOT VALID-HANDLE (vha-Call) THEN"?

    Com o objetivo de sempre criar uma instância.
  3. lwazevedo

    lwazevedo Membro Ativo

    certo, vou tentar fazer isso. obrigado.
  4. lwazevedo

    lwazevedo Membro Ativo

    Resolvido. O problema era no controle da DLL.

Compartilhe esta Página