Executando comandos sem travar a aplicação
Boas pessoal.
Existem algumas maneiras de se executar comandos em shell ou prompt (se la como chama-se isso hoje no Windows). Tudo depende do que você precisa fazer com o comando chamado. A forma mais usada de se executar um comando é usando a função system() ou ainda a função exec().
Muitas vezes não precisamos saber o retorno da aplicação, só precisamos chama-la. No Windows é possível instancia um COM Object do shell e executar o comando, não sei se o mesmo trava a aplicação, porem no Linux, ao executar um comando com o exec() ou system() a aplicação trava até que a aplicação chamada se fecha.
Isso ocorre por que a saida da aplicação será data ao método de retorno da função. Para que isso não ocorra, é preciso mudar a saída do resultado. Algo assim:
Assim, mudamos a saida para o lixo, e então podemos inicia-lo em background.
Espero que esta simples dica ajude o pessoal, pois sofre um "cadinho" pra descobri-la.
Valeu!