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.