RETORNO DE UM EXECUTÁVEL CHAMADO ATRAVÉS DO SYSTEM()

1. RETORNO DE UM EXECUTÁVEL CHAMADO ATRAVÉS DO SYSTEM()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 16/11/2016 - 15:50h

Olá pessoal, podem me ajudar ?

Tenho um programinha em C, escrito no DEV c++, onde eu peço para executar um executável externo desta forma:

system("programa"); // programa trata se de um .exe que retorna um valor inteiro.

Como faço para obter o valor de retorno de programa.exe ?

Obrigado




  


2. Re: RETORNO DE UM EXECUTÁVEL CHAMADO ATRAVÉS DO SYSTEM()

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/11/2016 - 15:51h

Examinando o valor retornado por system().

Mas note que a própria system() pode falhar, mesmo antes de invocar o comando externo. Nesse caso, você deve ver qual valor ela retorna no seu sistema (Windows?). No mundo UNIX, quando a função falha por não conseguir executar o comando, o valor de retorno é 127, e outros tipos de erro são sinalizados com -1, e o valor da variável global errno pode ser examinado para determinar a causa.


3. Re: RETORNO DE UM EXECUTÁVEL CHAMADO ATRAVÉS DO SYSTEM()

TIAGO LIMA
TIAGOLIMAME

(usa Outra)

Enviado em 16/11/2016 - 15:55h

Como posso fazer isto ?

tipo :
retorno = system("programa");

isso ja testei... retorna apenas o status do system, dizendo se o programa foi aberto com exito ou não. Preciso do retorno do executável e não da função system.


4. Re: RETORNO DE UM EXECUTÁVEL CHAMADO ATRAVÉS DO SYSTEM()

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/11/2016 - 16:18h

TIAGOLIMAME escreveu:

Como posso fazer isto ?

tipo :
retorno = system("programa");

isso ja testei... retorna apenas o status do system, dizendo se o programa foi aberto com exito ou não. Preciso do retorno do executável e não da função system.


De acordo com o a documentação de system() do Visual Studio 2015, ela deveria retornar o status do interpretador de comandos usado para processar o comando.

Return Value
If command is
NULL and the command interpreter is found, returns a nonzero value. If the command interpreter is not found, returns 0 and sets errno to ENOENT. If command is not NULL, system returns the value that is returned by the command interpreter. It returns the value 0 only if the command interpreter returns the value 0. A return value of -1 indicates an error, and errno is set to one of the following values:

E2BIG
The argument list (which is system-dependent) is too big.
ENOENT
The command interpreter cannot be found.
ENOEXEC
The command-interpreter file cannot be executed because the format is not valid.
ENOMEM
Not enough memory is available to execute command; or available memory has been corrupted; or a non-valid block exists, which indicates that the process that's making the call was not allocated correctly.


Eu não sei, porém, se o interpretador de comandos do Windows garante que vai refletir o comando que você executar dentro dele, como faz o do UNIX.

Eu acho que, na época do MS-DOS, o velho COMMAND.COM fazia isso, e esperaria que o Windows tivesse comportamento semelhante. Mas eu sei que existem situações no Windows em que o interpretador de comandos não espera o comando terminar antes de retornar. Talvez você esteja caindo num caso assim.

Eu não tenho como testar porque não uso Windows. Tente vasculhar a MSDN.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts