Pergunta

Eu tenho este programa em C ++:

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

Quando eu executo e compilá-lo e digitar, por exemplo, "helo", o meu programa imprime o erro:

  "helo" not found.

Posso parar esse erro seja exibida? Existe alguma maneira de desativar o erro do comando do sistema?

Foi útil?

Solução

Você não pode mudar a forma como system exibe erros. C e C ++ colocar muito pouco a nenhuma exigência em implementações nesse sentido, de modo que grandes partes dela não são especificadas, que lhes permitam ser tão flexível quanto possível.

Se você quiser um controle mais preciso, você deve usar as funções de sua biblioteca de tempo de execução ou sistema de operação interface. Tente execvp (veja man execvp) em linux / unix ou a função CreateProcess para sistemas Windows, que usa a API do Windows que permite grande controle sobre a manipulação de erros e outras coisas.

Outras dicas

Você está em linux? Experimente digitar "./hello"

Se isso funcionar, a razão é que o diretório atual ( "") não está no caminho de pesquisa. É necessário indicar que o programa compilado está "lá" no diretório.

Como alternativa, você pode fazer algo como

export PATH = $ PATH:.

Isso adiciona "" (Diretório atual) ao caminho de pesquisa.

Se você estiver no Windows, tente "hello.exe"

Se você estiver no Linux, você pode tentar redirecionar a saída de erro para o dispositivo null?

strcat(buf, "2> /dev/null");
system(buf);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top